/* =============================================================================
   pix-theme-g  ·  PRESET: ArneIron (red pixel-CRT)
   presets/arneiron/_widgets-swiper-blocks.css  —  UNIT 4 deliverable
   -----------------------------------------------------------------------------
   PARTIAL — @import'd into presets/arneiron.css (after the U1 token bridge).
   Load order:  arneiron.css  ->  @import  _widgets-swiper-blocks.css
   This file MUST come after the U1 token bridge in arneiron.css so that
   var(--ai-*) / var(--pix-*) are already defined. It DEFINES NO TOKENS.

   SCOPE: every rule is prefixed `body.pix-theme-tone-arneiron`. Nothing leaks
   to the PixTheme default preset. Remove the body class -> PixTheme renders
   exactly as before. Zero residue.

   TOKENS: consumes only the U1 bridge (var(--ai-*) red-CRT palette + the
   re-pointed var(--pix-*) theme tokens from presets/arneiron.css §1). It does
   NOT use raw ds.css `--c-*` tokens (those live only in the prototype) and does
   NOT redefine anything. Mirror of ds.css look, ported to the bridge names:
       ds.css --c-signal     -> --ai-signal
       ds.css --grad-panel   -> --ai-grad-panel
       ds.css --sh-block     -> --ai-sh-block
       ds.css --tex-halftone -> --ai-tex-halftone (+ --ai-tex-halftone-size)
       ds.css --grad-ramp    -> --ai-grad-ramp
       ... etc.

   COVERAGE (U4 scope — widgets / content boxes / sliders / blocks ONLY):
     1.  Sidebar widgets      — .widget shell, .widget-title/.widgettitle,
                                 widget lists / recent posts, .tagcloud, search
     2.  Content boxes        — .pix-feature-box / .pix-icon-box /
                                 .pix-service-box / .news-card(+.news-card-people)
                                 / .pix-testimonial(+.wp-block-pixtheme-testimonial)
                                 as ds.css .card / .card--feature w/ halftone
     3.  Tabs / accordion     — ds.css §11 tabs + accordion
     4.  Progress / gauges    — ds.css §12 segmented pixel bars + radial
     5.  Swiper nav + bullets — pixel-CRT arrows + square bullets + scrollbar
     6.  Brands / portfolio   — Swiper gallery grid (.pix-gallery / .pix-portfolio
                                 / .pix-service / .pix-news-item) + overlays + brands

   CEDED (handled by sibling partials — NOT touched here):
     • header / footer / primary nav  -> _header-footer-nav.css (U3)
     • page-template chrome           -> _page-templates.css (U5)
     • token bridge / base / buttons / forms / cards-base / price-table / CRT
                                      -> presets/arneiron.css (U1)
     NOTE: U1 already ships FOUNDATIONAL versions of some of these widgets
     (sidebar widget shell, tagcloud, Swiper bullets). This U4 partial layers
     the DETAILED ds.css/wp-kit treatment ON TOP (additive, same scope, same
     tokens) — it does not edit U1.

   OWL -> SWIPER GATE (DOC ONLY — see also _u4-owl-gate-NOTES.md):
     The live theme renders carousels with Swiper@11 (verified on
     dev.arneiron.net: `.swiper`/`.swiper-slide`/`.swiper-button-next|prev`/
     `.swiper-pagination-bullet`; NO `owl-*` classes in any active block). A
     LEGACY Owl Carousel enqueue still exists in the theme PHP
     (frontend-assets.php, flagged in U1 README). The ArneIron preset styles
     SWIPER ONLY. Any legacy Owl carousel enqueue SHOULD be gated off in favor
     of Swiper at the PHP enqueue layer (dequeue owl.carousel css/js +
     owl-theme), so the preset never has to skin a second, redundant carousel
     engine. THIS PASS MAKES NO CODE CHANGE — CSS + doc only. The PHP gate is a
     follow-up for the preset-loader / frontend-assets owner.

   ASSUMED SELECTORS: marked inline with an "ASSUMED" comment. These are theme-
   conventional class names not directly confirmed on the homepage curl (the
   homepage carries no classic sidebar, tabs, accordion, or progress block).
   They follow the pix-* / wp-block-pixtheme-* naming the theme uses elsewhere
   and degrade harmlessly if absent (scoped, additive, no !important except the
   two documented cascade-override cases).

   VERIFIED-LIVE SELECTORS (dev.arneiron.net recon, this unit):
     .pix-carousel.pix-gallery.pix-portfolio / .pix-service
     .pix-gallery-slider.pix-swiper-carousel.swiper.swiper-container
     .swiper-slide.pix-gallery-item (+ .pix-hover-info / .pix-bottom-info /
       .pix-overlay-container)
     .pix-hover-info-container / .pix-bottom-info-container
     .pix-overlay / .pix-overlay.pix-main-color
     .pix-news-item.pix-overlay-container
     .news-card-people / .news-card-people__image
     .pix-icon-circle.pix-icon-color
     .wp-block-pixtheme-icon-box / .wp-block-pixtheme-testimonial
     .swiper-button-next / .swiper-button-prev / .swiper-pagination
   ============================================================================= */


/* =============================================================================
   1. SIDEBAR WIDGETS  (ds.css §4 sidebar + §10/§11 feedback/nav)
      Live theme uses standard WP widget classes (.widget / .widgettitle) plus
      WooCommerce widgets. U1 set the base shell; here is the detailed skin.
   ============================================================================= */
/* widget shell — reinforce panel + offset block shadow + hard corners */
body.pix-theme-tone-arneiron .widget,
body.pix-theme-tone-arneiron .pix-sidebar .widget,                 /* ASSUMED: theme sidebar wrapper */
body.pix-theme-tone-arneiron .sidebar .widget,                     /* ASSUMED */
body.pix-theme-tone-arneiron aside .widget {
  position: relative;
  background: var(--ai-grad-panel);
  border: 2px solid var(--ai-grid-2);
  box-shadow: var(--ai-sh-block);
  border-radius: 0;
}
/* faint halftone wash behind widget content (ds.css .card::after, .5 -> .35) */
body.pix-theme-tone-arneiron .widget::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .35;
  background-image: var(--ai-tex-halftone);
  background-size: var(--ai-tex-halftone-size);
}
body.pix-theme-tone-arneiron .widget > * { position: relative; z-index: 1; }

/* widget title — ds.css .card-title / sidebar .label uppercase HUD label */
body.pix-theme-tone-arneiron .widget-title,
body.pix-theme-tone-arneiron .widgettitle,
body.pix-theme-tone-arneiron .widget .widget-title {
  font-family: var(--ai-f-ui);
  font-weight: 700; letter-spacing: 1px; text-transform: uppercase;
  color: var(--ai-ink);
  border-bottom: 2px solid var(--ai-grid-2);
  padding-bottom: 8px; margin-bottom: 16px;
}
/* signal tick before the title (ds.css HUD accent) */
body.pix-theme-tone-arneiron .widget-title::before,
body.pix-theme-tone-arneiron .widgettitle::before {
  content: ""; display: inline-block; width: 8px; height: 8px;
  margin-right: 8px; vertical-align: baseline;
  background: var(--ai-signal); box-shadow: var(--ai-sh-glow-soft);
}

/* widget lists / recent posts / categories / archives (ds.css .sidebar nav-item) */
body.pix-theme-tone-arneiron .widget ul,
body.pix-theme-tone-arneiron .widget ol { list-style: none; margin: 0; padding: 0; }
body.pix-theme-tone-arneiron .widget ul li {
  font-family: var(--ai-f-ui);
  border-bottom: 1px solid var(--ai-grid);
  padding: 8px 0 8px 14px; position: relative;
  color: var(--ai-ink-dim); letter-spacing: .5px;
}
body.pix-theme-tone-arneiron .widget ul li:last-child { border-bottom: none; }
/* pixel bullet (ds.css ▸ marker) */
body.pix-theme-tone-arneiron .widget ul li::before {
  content: "▸"; position: absolute; left: 0; top: 8px;
  color: var(--ai-signal); font-size: 11px;
}
body.pix-theme-tone-arneiron .widget ul li a { color: var(--ai-ink-dim); }
body.pix-theme-tone-arneiron .widget ul li a:hover {
  color: var(--ai-signal); text-shadow: var(--ai-sh-glow-soft);
}
/* recent-post thumb + meta (ds.css .card--post .meta mono caption) */
body.pix-theme-tone-arneiron .widget .post-date,
body.pix-theme-tone-arneiron .widget .rpwwt-post-date,           /* ASSUMED: recent-posts-widget */
body.pix-theme-tone-arneiron .widget .comment-author-link,
body.pix-theme-tone-arneiron .widget .post-meta {               /* ASSUMED */
  font-family: var(--ai-f-mono); font-size: 11px;
  letter-spacing: 1px; color: var(--ai-ink-faint); text-transform: uppercase;
}
/* count parentheses (categories/archives) -> dim mono */
body.pix-theme-tone-arneiron .widget ul li .count,
body.pix-theme-tone-arneiron .widget ul li span.count {         /* ASSUMED: WP default count span */
  font-family: var(--ai-f-mono); color: var(--ai-ink-faint);
}

/* tag cloud — ds.css §10 .tag (mono, hairline box, signal text) */
body.pix-theme-tone-arneiron .tagcloud,
body.pix-theme-tone-arneiron .wp-block-tag-cloud {
  display: flex; flex-wrap: wrap; gap: 6px;
}
body.pix-theme-tone-arneiron .tagcloud a,
body.pix-theme-tone-arneiron .wp-block-tag-cloud a {
  font-family: var(--ai-f-mono);
  font-size: 12px !important;   /* override WP inline per-tag font-size sizing */
  color: var(--ai-signal);
  background: var(--ai-well);
  border: 1px solid var(--ai-grid-2);
  padding: 2px 8px; border-radius: 0;
  text-transform: uppercase; letter-spacing: 1px;
  transition: border-color 120ms steps(3,end), color 120ms steps(3,end);
}
body.pix-theme-tone-arneiron .tagcloud a:hover,
body.pix-theme-tone-arneiron .wp-block-tag-cloud a:hover {
  color: var(--ai-hot);
  border-color: var(--ai-signal);
  box-shadow: var(--ai-sh-glow-soft);
}

/* search widget — terminal-prompt field (ds.css §6 .search + .input) */
body.pix-theme-tone-arneiron .widget_search,
body.pix-theme-tone-arneiron .widget_block .wp-block-search,
body.pix-theme-tone-arneiron .woocommerce-product-search { position: relative; }
body.pix-theme-tone-arneiron .widget_search input[type="search"],
body.pix-theme-tone-arneiron .wp-block-search__input,
body.pix-theme-tone-arneiron .woocommerce-product-search input[type="search"] {
  font-family: var(--ai-f-mono); color: var(--ai-ink);
  background: var(--ai-well);
  border: 2px solid var(--ai-grid-2); border-radius: 0;
  padding: 8px 10px;
}
body.pix-theme-tone-arneiron .widget_search input[type="search"]:focus,
body.pix-theme-tone-arneiron .wp-block-search__input:focus,
body.pix-theme-tone-arneiron .woocommerce-product-search input[type="search"]:focus {
  outline: none; border-color: var(--ai-signal);
  box-shadow: 0 0 0 1px var(--ai-signal), var(--ai-sh-glow-soft);
}
/* search submit button (ds.css .btn small) */
body.pix-theme-tone-arneiron .widget_search button[type="submit"],
body.pix-theme-tone-arneiron .wp-block-search__button,
body.pix-theme-tone-arneiron .woocommerce-product-search button[type="submit"] {
  font-family: var(--ai-f-ui); font-weight: 700; letter-spacing: 1px;
  text-transform: uppercase; color: var(--ai-base);
  background: var(--ai-grad-primary);
  border: 2px solid var(--ai-whitehot); border-radius: 0;
}
body.pix-theme-tone-arneiron .widget_search button[type="submit"]:hover,
body.pix-theme-tone-arneiron .wp-block-search__button:hover {
  background: var(--ai-grad-primary-hover);
}

/* WooCommerce price-filter slider widget — signal handle/range (ds.css .slider) */
body.pix-theme-tone-arneiron .widget_price_filter .ui-slider {
  background: var(--ai-well); border: 2px solid var(--ai-grid-2); border-radius: 0;
}
body.pix-theme-tone-arneiron .widget_price_filter .ui-slider .ui-slider-range {
  background: linear-gradient(90deg, var(--ai-maroon), var(--ai-signal));
}
body.pix-theme-tone-arneiron .widget_price_filter .ui-slider .ui-slider-handle {
  background: var(--ai-whitehot); border: 2px solid var(--ai-signal); border-radius: 0;
}


/* =============================================================================
   2. CONTENT BOXES  (ds.css §7 .card / .card--feature — halftone panels)
      feature / icon / service / news-card / testimonial.
      U1 set a base card skin; here are the per-variant ds.css treatments.
   ============================================================================= */
/* shared card shell (matches U1 §7; re-stated for the U4 variants + news-card-people) */
body.pix-theme-tone-arneiron .pix-feature-box,
body.pix-theme-tone-arneiron .pix-icon-box,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box,           /* VERIFIED live */
body.pix-theme-tone-arneiron .pix-service-box,                     /* ASSUMED: service box block */
body.pix-theme-tone-arneiron .news-card,                           /* ASSUMED: classic news card */
body.pix-theme-tone-arneiron .news-card-people,                    /* VERIFIED live */
body.pix-theme-tone-arneiron .pix-testimonial,                     /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial {      /* VERIFIED live */
  position: relative;
  background: var(--ai-grad-panel);
  border: 2px solid var(--ai-grid-2);
  box-shadow: var(--ai-sh-block);
  border-radius: 0;
}
/* halftone texture overlay (ds.css .card::after) */
body.pix-theme-tone-arneiron .pix-feature-box::after,
body.pix-theme-tone-arneiron .pix-icon-box::after,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box::after,
body.pix-theme-tone-arneiron .pix-service-box::after,
body.pix-theme-tone-arneiron .news-card::after,
body.pix-theme-tone-arneiron .news-card-people::after,
body.pix-theme-tone-arneiron .pix-testimonial::after,
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image: var(--ai-tex-halftone);
  background-size: var(--ai-tex-halftone-size);
}
/* keep real content above the halftone */
body.pix-theme-tone-arneiron .pix-feature-box > *,
body.pix-theme-tone-arneiron .pix-icon-box > *,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box > *,
body.pix-theme-tone-arneiron .pix-service-box > *,
body.pix-theme-tone-arneiron .news-card > *,
body.pix-theme-tone-arneiron .news-card-people > *,
body.pix-theme-tone-arneiron .pix-testimonial > *,
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial > * {
  position: relative; z-index: 1;
}

/* --- feature box: signal top-rule accent (ds.css .card--feature) --- */
body.pix-theme-tone-arneiron .pix-feature-box,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box {
  border-top: 3px solid var(--ai-signal);
}
/* card title (ds.css .card-title) */
body.pix-theme-tone-arneiron .pix-feature-box .pix-feature-title,    /* ASSUMED */
body.pix-theme-tone-arneiron .pix-icon-box .pix-icon-box-title,      /* ASSUMED */
body.pix-theme-tone-arneiron .pix-service-box .pix-service-title,    /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box h2,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box h3,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box h4 {
  font-family: var(--ai-f-ui);
  font-weight: 700; letter-spacing: 1px; text-transform: uppercase;
  color: var(--ai-ink);
}

/* --- icon tile (ds.css .card--feature .icon + live .pix-icon-circle) --- */
body.pix-theme-tone-arneiron .pix-feature-box .pix-icon,
body.pix-theme-tone-arneiron .pix-icon-box .pix-icon,
body.pix-theme-tone-arneiron .pix-service-box .pix-icon,
body.pix-theme-tone-arneiron .wp-block-pixtheme-icon-box .pix-icon {
  color: var(--ai-signal); text-shadow: var(--ai-sh-glow-soft);
}
/* circular icon badge (live .pix-icon-circle) -> framed pixel tile, signal glyph.
   The theme's .pix-icon-bg-main-color now resolves to var(--pix-main-color)
   = --ai-signal via the U1 bridge, so the bg follows automatically; we add the
   hard frame + glow. */
body.pix-theme-tone-arneiron .pix-icon-circle {
  border: 2px solid var(--ai-grid-2);
  background: var(--ai-grad-panel-up);
  color: var(--ai-signal);
  border-radius: 0;            /* kill the circle -> pixel tile per brand */
  box-shadow: var(--ai-sh-glow-soft);
}
body.pix-theme-tone-arneiron .pix-icon-circle.pix-icon-bg-main-color {
  background: var(--ai-grad-primary); color: var(--ai-base);
  border-color: var(--ai-signal);
}

/* --- news card (ds.css .card--post): mono meta + signal title hover --- */
body.pix-theme-tone-arneiron .news-card .post-meta,
body.pix-theme-tone-arneiron .news-card-people .pix-news-meta,        /* ASSUMED */
body.pix-theme-tone-arneiron .news-card-people .news-card-people__meta,/* ASSUMED */
body.pix-theme-tone-arneiron .pix-news-item .pix-news-meta {          /* ASSUMED */
  font-family: var(--ai-f-mono); font-size: 11px;
  letter-spacing: 1px; text-transform: uppercase; color: var(--ai-ink-faint);
}
body.pix-theme-tone-arneiron .news-card-people__image,                /* VERIFIED live */
body.pix-theme-tone-arneiron .news-card .pix-news-thumb {             /* ASSUMED */
  border: 2px solid var(--ai-grid-2); border-radius: 0;
  filter: saturate(.85) contrast(1.05);
}
body.pix-theme-tone-arneiron .news-card-people:hover .news-card-people__image {
  border-color: var(--ai-signal);
}

/* --- testimonial (ds.css .bubble--agent feel): signal left-rule + quote --- */
body.pix-theme-tone-arneiron .pix-testimonial,
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial {
  border-left: 3px solid var(--ai-signal);
}
body.pix-theme-tone-arneiron .pix-testimonial .pix-testimonial-content,  /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial blockquote,
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial p {
  font-family: var(--ai-f-body); color: var(--ai-ink-dim); font-style: normal;
}
/* big pixel quote glyph */
body.pix-theme-tone-arneiron .pix-testimonial::before,
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial::before {
  content: "\201C"; position: absolute; top: 6px; right: 14px;
  font-family: var(--ai-f-display); font-size: 48px; line-height: 1;
  color: var(--ai-grid-2); z-index: 0;
}
/* author / position (ds.css mono caption) */
body.pix-theme-tone-arneiron .pix-testimonial .pix-author,            /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial cite,
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial .pix-testimonial-author {
  font-family: var(--ai-f-ui); font-weight: 700; letter-spacing: 1px;
  text-transform: uppercase; color: var(--ai-ink); font-style: normal;
}
body.pix-theme-tone-arneiron .pix-testimonial .pix-position,          /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-testimonial .pix-testimonial-role {  /* ASSUMED */
  font-family: var(--ai-f-mono); font-size: 11px; letter-spacing: 1px;
  text-transform: uppercase; color: var(--ai-ink-faint);
}


/* =============================================================================
   3. TABS / ACCORDION  (ds.css §11)
      Theme/plugin block names assumed (wp-block-pixtheme-tab/accordion) +
      generic pix-tabs/pix-accordion. All ASSUMED — no tabs/accordion on the
      homepage curl. Degrade harmlessly if absent.
   ============================================================================= */
/* --- tabs (ds.css .tabs / .tab) --- */
body.pix-theme-tone-arneiron .pix-tabs .pix-tab-nav,                  /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-tabs .pix-tabs-head { /* ASSUMED */
  display: flex; gap: 2px; border-bottom: 2px solid var(--ai-grid-2);
}
body.pix-theme-tone-arneiron .pix-tabs .pix-tab,                      /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-tab-item .pix-tab-title { /* ASSUMED */
  font-family: var(--ai-f-ui); font-weight: 700; font-size: 14px;
  letter-spacing: 1px; text-transform: uppercase;
  padding: 8px 16px; color: var(--ai-ink-dim); cursor: pointer;
  background: var(--ai-panel);
  border: 2px solid transparent; border-bottom: none; margin-bottom: -2px;
  border-radius: 0;
}
body.pix-theme-tone-arneiron .pix-tabs .pix-tab:hover { color: var(--ai-ink); }
body.pix-theme-tone-arneiron .pix-tabs .pix-tab.is-active,
body.pix-theme-tone-arneiron .wp-block-pixtheme-tab-item.is-active {
  color: var(--ai-signal);
  background: var(--ai-panel-2);
  border-color: var(--ai-grid-2);
  border-bottom: 2px solid var(--ai-base);
  text-shadow: var(--ai-sh-glow-soft);
}
body.pix-theme-tone-arneiron .pix-tabs .pix-tab-panel,                /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-tab-content {         /* ASSUMED */
  font-family: var(--ai-f-body); color: var(--ai-ink-dim);
}

/* --- accordion (ds.css .accordion / .acc-item) --- */
body.pix-theme-tone-arneiron .pix-accordion .pix-accordion-item,
body.pix-theme-tone-arneiron .wp-block-pixtheme-accordion-item {
  border: 2px solid var(--ai-grid-2); margin-bottom: 2px;
  background: var(--ai-panel); border-radius: 0;
}
body.pix-theme-tone-arneiron .pix-accordion .pix-accordion-head,      /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-accordion-item .pix-accordion-title {  /* ASSUMED */
  display: flex; align-items: center; justify-content: space-between;
  cursor: pointer; padding: 12px 16px;
  font-family: var(--ai-f-ui); font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase; color: var(--ai-ink);
}
/* chevron / toggle glyph -> signal, rotates when open */
body.pix-theme-tone-arneiron .pix-accordion .pix-accordion-head .pix-accordion-icon, /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-accordion-item .pix-accordion-icon {  /* ASSUMED */
  color: var(--ai-signal); transition: transform 120ms steps(3,end);
}
body.pix-theme-tone-arneiron .pix-accordion-item.is-open .pix-accordion-icon,
body.pix-theme-tone-arneiron .wp-block-pixtheme-accordion-item.is-open .pix-accordion-icon {
  transform: rotate(90deg);
}
body.pix-theme-tone-arneiron .pix-accordion .pix-accordion-body,      /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-accordion-item .pix-accordion-content { /* ASSUMED */
  font-family: var(--ai-f-body); color: var(--ai-ink-dim);
  padding: 0 16px 16px;
}
/* active accordion item -> signal frame + soft glow */
body.pix-theme-tone-arneiron .pix-accordion-item.is-open,
body.pix-theme-tone-arneiron .wp-block-pixtheme-accordion-item.is-open {
  border-color: var(--ai-signal); box-shadow: var(--ai-sh-glow-soft);
}


/* =============================================================================
   4. PROGRESS / GAUGES  (ds.css §12 segmented pixel bars + radial)
      Theme "skill bar" / progress block + easyPieChart radial. ASSUMED names.
   ============================================================================= */
/* linear track (ds.css .gauge .track) */
body.pix-theme-tone-arneiron .pix-progress,
body.pix-theme-tone-arneiron .pix-skill-bar,                          /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-progress .pix-progress-track { /* ASSUMED */
  height: 16px; background: #100708;
  border: 2px solid var(--ai-grid-2); border-radius: 0;
  position: relative; overflow: hidden;
}
/* fill (ds.css .gauge .fill -> red ramp) */
body.pix-theme-tone-arneiron .pix-progress .pix-progress-bar,
body.pix-theme-tone-arneiron .pix-skill-bar .pix-skill-fill,          /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-progress .pix-progress-bar {
  height: 100%; background: var(--ai-grad-ramp);
}
/* segment ticks overlay (ds.css .gauge .track::after) */
body.pix-theme-tone-arneiron .pix-progress::after,
body.pix-theme-tone-arneiron .pix-skill-bar::after,
body.pix-theme-tone-arneiron .wp-block-pixtheme-progress .pix-progress-track::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: repeating-linear-gradient(90deg,
    transparent 0 10px, rgba(5,2,3,.9) 10px 12px);
}
/* gauge head / percent label (ds.css .gauge-head .pct) */
body.pix-theme-tone-arneiron .pix-progress-label,                    /* ASSUMED */
body.pix-theme-tone-arneiron .pix-skill-bar .pix-skill-label {       /* ASSUMED */
  font-family: var(--ai-f-mono); font-size: 12px;
  letter-spacing: 1px; color: var(--ai-ink-dim);
}
body.pix-theme-tone-arneiron .pix-progress-label .pix-percent,       /* ASSUMED */
body.pix-theme-tone-arneiron .pix-skill-bar .pix-skill-percent {     /* ASSUMED */
  color: var(--ai-signal); text-shadow: var(--ai-sh-glow-soft);
}
/* radial / easyPieChart (ds.css .radial) — recolor canvas track + center value */
body.pix-theme-tone-arneiron .pix-piechart,                          /* ASSUMED: easyPieChart wrapper */
body.pix-theme-tone-arneiron .pix-counter-circle {                   /* ASSUMED */
  position: relative; color: var(--ai-signal);
}
body.pix-theme-tone-arneiron .pix-piechart .pix-piechart-value,      /* ASSUMED */
body.pix-theme-tone-arneiron .pix-counter-circle .pix-counter-num {  /* ASSUMED */
  font-family: var(--ai-f-ui); font-weight: 700; color: var(--ai-signal);
  text-shadow: var(--ai-sh-glow-soft);
}
/* counter / fun-fact number (ds.css .stat-value) */
body.pix-theme-tone-arneiron .pix-counter .pix-counter-number,       /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-counter .pix-counter-number { /* ASSUMED */
  font-family: var(--ai-f-display); font-weight: 900;
  color: var(--ai-ink); text-shadow: var(--ai-sh-glow-soft);
}


/* =============================================================================
   5. SWIPER SLIDERS  (Swiper@11 — NOT Owl)  (ds.css carousel feel)
      VERIFIED live: .swiper-button-next/prev, .swiper-pagination(-bullet),
      .swiper-container.pix-swiper-carousel, .pix-gallery-slider.
      U1 set base nav/bullet colors; here is the full pixel-CRT treatment
      (framed arrow tiles, square bullets, segmented scrollbar).
   ============================================================================= */
/* nav arrows -> framed pixel tiles with signal glyph (ds.css .pager a feel) */
body.pix-theme-tone-arneiron .swiper-button-next,
body.pix-theme-tone-arneiron .swiper-button-prev {
  width: 40px; height: 40px;
  color: var(--ai-signal);
  background: var(--ai-grad-panel-up);
  border: 2px solid var(--ai-grid-2);
  border-radius: 0;
  box-shadow: var(--ai-sh-block);
  text-shadow: var(--ai-sh-glow-soft);
  transition: color 120ms steps(3,end), border-color 120ms steps(3,end),
              transform 90ms steps(4,end), box-shadow 90ms steps(4,end);
}
/* shrink Swiper's oversized default arrow glyph to a crisp pixel chevron */
body.pix-theme-tone-arneiron .swiper-button-next::after,
body.pix-theme-tone-arneiron .swiper-button-prev::after {
  font-size: 18px; font-weight: 700;
}
body.pix-theme-tone-arneiron .swiper-button-next:hover,
body.pix-theme-tone-arneiron .swiper-button-prev:hover {
  color: var(--ai-hot);
  border-color: var(--ai-signal);
}
/* press = snap into the block shadow (ds.css btn :active) */
body.pix-theme-tone-arneiron .swiper-button-next:active,
body.pix-theme-tone-arneiron .swiper-button-prev:active {
  transform: translate(2px,2px); box-shadow: 0 0 0 0 #000;
}
body.pix-theme-tone-arneiron .swiper-button-disabled {
  opacity: .35; pointer-events: none;
}

/* pagination bullets -> square pixel dots (ds.css .pager / bullet) */
body.pix-theme-tone-arneiron .swiper-pagination-bullet {
  width: 10px; height: 10px;
  background: var(--ai-ink-faint);
  border: 1px solid var(--ai-grid-2);
  border-radius: 0; opacity: 1;
  transition: background 120ms steps(3,end), box-shadow 120ms steps(3,end);
}
body.pix-theme-tone-arneiron .swiper-pagination-bullet:hover {
  background: var(--ai-ink-dim);
}
body.pix-theme-tone-arneiron .swiper-pagination-bullet-active {
  background: var(--ai-signal);
  border-color: var(--ai-signal);
  box-shadow: var(--ai-sh-glow-soft);
}
/* progress-bar pagination variant */
body.pix-theme-tone-arneiron .swiper-pagination-progressbar {
  background: var(--ai-well);
}
body.pix-theme-tone-arneiron .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
  background: var(--ai-grad-ramp);
}
/* fraction pagination -> mono HUD readout */
body.pix-theme-tone-arneiron .swiper-pagination-fraction {
  font-family: var(--ai-f-mono); letter-spacing: 1px; color: var(--ai-ink-dim);
}
body.pix-theme-tone-arneiron .swiper-pagination-fraction .swiper-pagination-current {
  color: var(--ai-signal);
}
/* scrollbar -> maroon drag in a dark well */
body.pix-theme-tone-arneiron .swiper-scrollbar {
  background: var(--ai-well); border-radius: 0;
}
body.pix-theme-tone-arneiron .swiper-scrollbar-drag {
  background: var(--ai-maroon); border-radius: 0;
}


/* =============================================================================
   6. BRANDS / PORTFOLIO GRID  (Swiper gallery; theme is Swiper-based, not isotope)
      VERIFIED live wrappers: .pix-carousel.pix-gallery.pix-portfolio /
      .pix-service / .pix-gallery-item / .pix-overlay(-container) /
      .pix-hover-info / .pix-bottom-info / .pix-news-item. The brands strip is
      ASSUMED (.pix-brands / .pix-clients) — not on the homepage.
   ============================================================================= */
/* gallery / portfolio / service item tile (ds.css .card framed media) */
body.pix-theme-tone-arneiron .pix-gallery-item,                      /* VERIFIED live */
body.pix-theme-tone-arneiron .pix-news-item {                        /* VERIFIED live */
  position: relative;
  border: 2px solid var(--ai-grid-2);
  background: var(--ai-obsidian);
  border-radius: 0;
  box-shadow: var(--ai-sh-block);
  overflow: hidden;
}
body.pix-theme-tone-arneiron .pix-gallery-item img,
body.pix-theme-tone-arneiron .pix-news-item img {
  filter: saturate(.82) contrast(1.06);
  transition: filter 200ms steps(4,end), transform 220ms steps(4,end);
}
body.pix-theme-tone-arneiron .pix-gallery-item:hover { border-color: var(--ai-signal); }
body.pix-theme-tone-arneiron .pix-gallery-item:hover img,
body.pix-theme-tone-arneiron .pix-news-item:hover img {
  filter: saturate(1.05) contrast(1.1);
}

/* hover / bottom overlay (live .pix-overlay / .pix-overlay-container).
   The theme's .pix-main-color overlay now resolves to var(--pix-main-color)
   = --ai-signal via the U1 bridge; we convert it to a dithered red wash + HUD
   frame rather than a flat fill. */
body.pix-theme-tone-arneiron .pix-overlay,
body.pix-theme-tone-arneiron .pix-overlay-container .pix-overlay {   /* VERIFIED live */
  background: linear-gradient(180deg,
    rgba(5,2,3,.10) 0%, rgba(140,16,20,.55) 60%, rgba(5,2,3,.88) 100%);
}
body.pix-theme-tone-arneiron .pix-overlay.pix-main-color {           /* VERIFIED live */
  background: linear-gradient(180deg,
    rgba(255,42,42,.18) 0%, rgba(140,16,20,.70) 100%);
}
/* overlay text (title/category) -> HUD mono + ui */
body.pix-theme-tone-arneiron .pix-overlay .pix-gallery-title,        /* ASSUMED */
body.pix-theme-tone-arneiron .pix-overlay .pix-portfolio-title,      /* ASSUMED */
body.pix-theme-tone-arneiron .pix-hover-info .pix-gallery-title,     /* ASSUMED */
body.pix-theme-tone-arneiron .pix-bottom-info .pix-gallery-title {   /* ASSUMED */
  font-family: var(--ai-f-ui); font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
  color: var(--ai-whitehot); text-shadow: var(--ai-sh-glow-soft);
}
body.pix-theme-tone-arneiron .pix-overlay .pix-gallery-cat,          /* ASSUMED */
body.pix-theme-tone-arneiron .pix-hover-info .pix-gallery-cat,       /* ASSUMED */
body.pix-theme-tone-arneiron .pix-bottom-info .pix-gallery-cat {     /* ASSUMED */
  font-family: var(--ai-f-mono); font-size: 11px;
  letter-spacing: 2px; text-transform: uppercase; color: var(--ai-signal);
}

/* portfolio filter nav, if the theme renders one (ds.css .tabs feel).
   NOT present on the homepage (Swiper gallery instead) — ALL ASSUMED. */
body.pix-theme-tone-arneiron .pix-gallery-filter,                    /* ASSUMED */
body.pix-theme-tone-arneiron .pix-portfolio-filter {                 /* ASSUMED */
  display: flex; flex-wrap: wrap; gap: 2px;
  border-bottom: 2px solid var(--ai-grid-2);
}
body.pix-theme-tone-arneiron .pix-gallery-filter a,                  /* ASSUMED */
body.pix-theme-tone-arneiron .pix-gallery-filter button,            /* ASSUMED */
body.pix-theme-tone-arneiron .pix-portfolio-filter a {              /* ASSUMED */
  font-family: var(--ai-f-ui); font-weight: 700; font-size: 13px;
  letter-spacing: 1px; text-transform: uppercase;
  padding: 6px 14px; color: var(--ai-ink-dim);
  background: var(--ai-panel); border: 2px solid transparent; border-bottom: none;
  border-radius: 0;
}
body.pix-theme-tone-arneiron .pix-gallery-filter a.is-active,
body.pix-theme-tone-arneiron .pix-gallery-filter a.active,           /* ASSUMED: theme may use .active */
body.pix-theme-tone-arneiron .pix-portfolio-filter a.is-active {
  color: var(--ai-signal); background: var(--ai-panel-2);
  border-color: var(--ai-grid-2);
}

/* brands / clients strip — desaturated logos that ignite to signal on hover
   (ds.css "sparse" treatment). ALL ASSUMED — no brands block on the homepage. */
body.pix-theme-tone-arneiron .pix-brands,                            /* ASSUMED */
body.pix-theme-tone-arneiron .pix-clients,                           /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-brands {             /* ASSUMED */
  border-top: 1px solid var(--ai-grid-2);
  border-bottom: 1px solid var(--ai-grid-2);
}
body.pix-theme-tone-arneiron .pix-brands .pix-brand-item img,        /* ASSUMED */
body.pix-theme-tone-arneiron .pix-clients .pix-client-logo img,      /* ASSUMED */
body.pix-theme-tone-arneiron .wp-block-pixtheme-brands img {         /* ASSUMED */
  filter: grayscale(1) brightness(.7) sepia(1) hue-rotate(-30deg) saturate(2);
  opacity: .55;
  transition: opacity 160ms steps(4,end), filter 160ms steps(4,end);
}
body.pix-theme-tone-arneiron .pix-brands .pix-brand-item:hover img,
body.pix-theme-tone-arneiron .pix-clients .pix-client-logo:hover img,
body.pix-theme-tone-arneiron .wp-block-pixtheme-brands img:hover {
  filter: none; opacity: 1;
}

/* =============================================================================
   END UNIT 4 PARTIAL  ·  _widgets-swiper-blocks.css
   Brace-balanced, every rule scoped under body.pix-theme-tone-arneiron.
   No tokens (re)defined here. Swiper-only; Owl gate is doc-only (see header +
   _u4-owl-gate-NOTES.md). No live writes / no deploy performed by this file.
   ============================================================================= */
