    :root {
      --bg: #141414;
      --surface: #1c1c1c;
      --rail-width: 80px;
      --drawer-width: min(86vw, 360px);
      --stroke: #ffffff;
      --text: #fafafa;
      --muted: #a3a3a3;
      --on-light: #0a0a0a;
      --shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
      --radius-lg: 18px;
      --radius-sm: 10px;
      --catalog-strip: #e8e8e8;
      --catalog-tabs-bar: #d2d2d2;
      /* vh fallback first — some Android Chrome builds mishandle dvh + nested overflow */
      --catalog-products-max-h: calc(100vh - 15rem);
      --catalog-products-max-h: calc(100dvh - 15rem);
      /* Rubik — rounded UI, Latin and Cyrillic */
      --font: Rubik, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
      --toolbar-icon-slot: 2.2rem;
      --toolbar-logo-size: 74px;
      --toolbar-inset-top: 1.15rem;
      --toolbar-logo-burger-gap: 0.28rem;
      /* Space below SUNRISE ENROLL line + close control (expanded drawer) */
      --toolbar-expanded-head-gap: 0.45rem;
      /* Slightly deeper than #141414: separation via depth and edge, not gray glow */
      --toolbar-panel-top: rgb(19, 19, 20);
      --toolbar-panel-mid: rgb(17, 17, 18);
      --toolbar-panel-bot: rgb(15, 15, 16);
      --toolbar-panel-edge: rgba(255, 255, 255, 0.1);
      /* Keyboard focus ring (not default blue); optional warm tone e.g. rgba(232, 220, 200, 0.55) */
      --focus-ring: rgba(255, 255, 255, 0.42);
      --focus-ring-width: 2px;
      --focus-ring-offset: 2px;
      accent-color: #d4d4d4;
    }

    * {
      box-sizing: border-box;
    }

    html {
      -webkit-tap-highlight-color: rgba(255, 255, 255, 0.07);
    }

    /* Drop blue ring after mouse click; keyboard keeps :focus-visible below */
    button:focus:not(:focus-visible),
    a:focus:not(:focus-visible) {
      outline: none;
    }

    body {
      margin: 0;
      font-family: var(--font);
      color: var(--text);
      background: var(--bg);
      line-height: 1.5;
      padding-left: var(--rail-width);
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
      text-rendering: optimizeLegibility;
    }

    .page {
      max-width: 960px;
      margin: 0 auto;
      padding: 0.35rem 1.25rem 3rem;
    }

    .top {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 1rem;
      margin-bottom: 0.22rem;
    }

    .top-left {
      display: flex;
      align-items: center;
      gap: 0.65rem;
    }

    .logo {
      display: flex;
      align-items: center;
      line-height: 0;
      margin-left: -0.55rem;
    }

    /* Logo via SVG + filter: black PNG background → transparent; no mix-blend/mask-image (works with file://) */
    .logo-svg {
      display: block;
      height: clamp(7.28rem, 20.8vw, 11.32rem);
      width: clamp(7.28rem, 20.8vw, 11.32rem);
      max-width: min(485px, 90vw);
      max-height: min(485px, 90vw);
      flex-shrink: 0;
      filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.12));
    }

    /* Avoid progressive decode flashing inside filtered SVGs: show only after full decode (see <head> on index/news). */
    .toolbar-logo,
    .logo-svg {
      opacity: 0;
      transition: opacity 0.22s ease;
    }

    html.logo-images-loaded .toolbar-logo,
    html.logo-images-loaded .logo-svg {
      opacity: 1;
    }

    html:not(.logo-images-loaded) .toolbar-logo {
      background: rgba(255, 255, 255, 0.045);
      border-radius: 14px;
    }

    @media (prefers-reduced-motion: reduce) {
      .toolbar-logo,
      .logo-svg {
        transition: none;
      }
    }

    .top-actions {
      display: flex;
      gap: 0.5rem;
      flex-wrap: wrap;
    }

    .pill {
      display: inline-flex;
      align-items: center;
      gap: 0.35rem;
      padding: 0.52rem 1.05rem;
      border-radius: 999px;
      font-size: 0.75rem;
      font-weight: 700;
      letter-spacing: 0.03em;
      text-transform: uppercase;
      text-decoration: none;
      border: 1px solid rgba(255, 255, 255, 0.7);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
      background: transparent;
      color: var(--text);
      transition: background 0.22s ease, color 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;
    }

    .pill--telegram:hover {
      color: var(--on-light);
      background: var(--stroke);
      border-color: var(--stroke);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55), 0 8px 22px rgba(0, 0, 0, 0.32);
      transform: translateY(-1px);
    }

    .pill--support:hover {
      color: var(--on-light);
      background: var(--stroke);
      border-color: var(--stroke);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55), 0 8px 22px rgba(0, 0, 0, 0.32);
      transform: translateY(-1px);
    }

    .pill:focus-visible {
      outline: var(--focus-ring-width) solid var(--focus-ring);
      outline-offset: var(--focus-ring-offset);
    }

    /* Same visual language as .quick-nav-icon in the toolbar */
    .menu-trigger {
      position: fixed;
      top: calc(
        0.7rem + var(--toolbar-inset-top) + var(--toolbar-logo-size) + var(--toolbar-logo-burger-gap)
      );
      left: calc((var(--rail-width) - var(--toolbar-icon-slot)) / 2);
      z-index: 31;
      cursor: pointer;
      font-family: inherit;
      width: var(--toolbar-icon-slot);
      height: var(--toolbar-icon-slot);
      min-width: var(--toolbar-icon-slot);
      min-height: var(--toolbar-icon-slot);
      padding: 0;
      border-radius: 9px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border: none;
      background: rgba(255, 255, 255, 0.06);
      box-shadow: none;
      color: rgba(255, 255, 255, 0.72);
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
      transition:
        left 0.42s cubic-bezier(0.22, 1, 0.36, 1),
        top 0.4s cubic-bezier(0.19, 1, 0.22, 1),
        background 0.22s ease,
        color 0.22s ease,
        transform 0.22s ease;
    }

    .menu-trigger:hover {
      background: rgba(255, 255, 255, 0.1);
      color: rgba(255, 255, 255, 0.88);
    }

    .menu-trigger:focus-visible {
      outline: var(--focus-ring-width) solid var(--focus-ring);
      outline-offset: 2px;
    }

    .menu-trigger:focus:not(:focus-visible) {
      outline: none;
    }

    .toolbar-logo {
      position: fixed;
      top: calc(0.7rem + var(--toolbar-inset-top));
      left: calc((var(--rail-width) - var(--toolbar-logo-size)) / 2);
      width: var(--toolbar-logo-size);
      height: var(--toolbar-logo-size);
      z-index: 31;
      pointer-events: none;
      filter: drop-shadow(0 0 16px rgba(255, 255, 255, 0.22));
    }

    .menu-brand-expanded {
      position: fixed;
      top: calc(0.7rem + var(--toolbar-inset-top));
      left: 0;
      width: var(--drawer-width);
      height: var(--toolbar-logo-size);
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 0;
      padding: 0 calc(var(--toolbar-icon-slot) + 14px + 0.55rem) 0
        calc((var(--rail-width) - var(--toolbar-logo-size)) / 2 + var(--toolbar-logo-size) + 0.55rem);
      font-size: 1.38rem;
      font-weight: 800;
      letter-spacing: 0.065em;
      line-height: 1.08;
      text-transform: uppercase;
      color: var(--text);
      white-space: nowrap;
      text-align: center;
      z-index: 31;
      pointer-events: none;
      overflow: hidden;
      text-overflow: ellipsis;
      opacity: 0;
      visibility: hidden;
      transform: translateX(-8px);
      transition: opacity 0.32s ease, visibility 0.32s ease, transform 0.38s cubic-bezier(0.19, 1, 0.22, 1);
    }

    body.menu-open .menu-brand-expanded {
      opacity: 1;
      visibility: visible;
      transform: translateX(0);
      transition-delay: 0.1s, 0.1s, 0.1s;
    }

    .menu-trigger-bars {
      position: relative;
      width: 15px;
      height: 11px;
      display: inline-block;
    }

    .menu-trigger-bars::before,
    .menu-trigger-bars::after,
    .menu-trigger-bars span {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      height: 1.5px;
      border-radius: 99px;
      background: currentColor;
      transform-origin: center;
      transition: transform 0.32s cubic-bezier(0.19, 1, 0.22, 1), opacity 0.22s ease, top 0.32s cubic-bezier(0.19, 1, 0.22, 1);
    }

    .menu-trigger-bars::before {
      top: 0;
    }

    .menu-trigger-bars span {
      top: 4.75px;
    }

    .menu-trigger-bars::after {
      top: 9.5px;
    }

    body.menu-open .menu-trigger-bars::before {
      top: 4.75px;
      transform: rotate(45deg);
    }

    body.menu-open .menu-trigger-bars span {
      opacity: 0;
    }

    body.menu-open .menu-trigger-bars::after {
      top: 4.75px;
      transform: rotate(-45deg);
    }

    body.menu-open .menu-trigger {
      top: calc(
        0.7rem + var(--toolbar-inset-top) + (var(--toolbar-logo-size) - var(--toolbar-icon-slot)) / 2
      );
      left: calc(var(--drawer-width) - var(--toolbar-icon-slot) - 12px);
      border-radius: 9px;
      border: none;
      background: rgba(255, 255, 255, 0.06);
      color: rgba(255, 255, 255, 0.72);
      box-shadow: none;
      backdrop-filter: none;
      -webkit-backdrop-filter: none;
    }

    body.menu-open .menu-trigger:hover {
      background: rgba(255, 255, 255, 0.1);
      color: rgba(255, 255, 255, 0.88);
    }

    .menu-overlay {
      position: fixed;
      inset: 0;
      background: rgba(0, 0, 0, 0.55);
      opacity: 0;
      pointer-events: none;
      transition: opacity 0.34s ease;
      z-index: 29;
    }

    .menu-drawer {
      position: fixed;
      top: 0;
      left: 0;
      bottom: 0;
      width: var(--rail-width);
      background: linear-gradient(
        180deg,
        var(--toolbar-panel-top) 0%,
        var(--toolbar-panel-mid) 42%,
        var(--toolbar-panel-bot) 100%
      );
      border-right: 1px solid var(--toolbar-panel-edge);
      box-shadow:
        inset -1px 0 0 rgba(255, 255, 255, 0.022),
        10px 0 32px rgba(0, 0, 0, 0.58),
        22px 0 70px rgba(0, 0, 0, 0.48);
      transform-origin: left center;
      transform: scale(1);
      opacity: 1;
      transition: width 0.48s cubic-bezier(0.19, 1, 0.22, 1), transform 0.48s cubic-bezier(0.19, 1, 0.22, 1), opacity 0.42s ease;
      z-index: 30;
      overflow-y: auto;
    }

    .menu-drawer-inner {
      position: relative;
      /* Inset = mini logo + gap to burger + slot + gap to list */
      padding: calc(
          0.7rem + var(--toolbar-inset-top) + var(--toolbar-logo-size) + var(--toolbar-logo-burger-gap) +
            var(--toolbar-icon-slot) + 1rem
        )
        0.65rem 1rem;
    }

    /* Section heading for a11y (aria-labelledby); visually a line above .quick-links */
    .menu-drawer-head {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      border: 0;
      white-space: nowrap;
    }

    .menu-title {
      margin: 0;
      padding: 0;
      font-size: 0;
      line-height: 0;
      overflow: hidden;
    }

    .quick-links {
      display: grid;
      gap: 0.25rem;
      grid-template-columns: 1fr;
    }

    .menu-drawer .quick-links {
      margin-top: 0.35rem;
      padding-top: 0.65rem;
      border-top: 1px solid rgba(255, 255, 255, 0.07);
    }

    .quick-catalog-svg {
      display: block;
      width: 1.35rem;
      height: 1.35rem;
      flex-shrink: 0;
    }

    .quick-short--icon {
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .menu-drawer .quick-short {
      display: none;
    }

    /* Same pattern as expanded: row + icon slot (rail shows icon centered only) */
    .menu-drawer .quick-link:not(.quick-link--catalog) {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      min-height: 2.65rem;
      margin-inline: 0;
      padding: 0.4rem 0.35rem;
      border-radius: 10px;
      border: none;
      background: transparent;
      box-shadow: none;
      color: rgba(250, 250, 250, 0.88);
      text-align: center;
      position: relative;
      overflow: hidden;
      transition: color 0.22s ease, background 0.22s ease;
    }

    .quick-link--catalog {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 100%;
      min-height: 2.65rem;
      margin-inline: 0;
      padding: 0.4rem 0.35rem;
      border-radius: 10px;
      border: none;
      /* Anchor :visited — otherwise currentColor on SVG reads as blue */
      color: rgba(252, 252, 252, 0.92);
      background: transparent;
      box-shadow: none;
      position: relative;
      overflow: hidden;
      transition: color 0.22s ease, background 0.22s ease;
    }

    .quick-link {
      text-decoration: none;
    }

    .quick-link:not(.quick-link--catalog):link,
    .quick-link:not(.quick-link--catalog):visited {
      color: rgba(250, 250, 250, 0.88);
    }

    .quick-link--catalog:link,
    .quick-link--catalog:visited {
      color: rgba(252, 252, 252, 0.92);
    }

    .quick-nav-icon {
      display: flex;
      width: var(--toolbar-icon-slot);
      height: var(--toolbar-icon-slot);
      flex-shrink: 0;
      align-items: center;
      justify-content: center;
      border-radius: 9px;
      background: rgba(255, 255, 255, 0.06);
      color: rgba(255, 255, 255, 0.55);
      transition: background 0.22s ease, color 0.22s ease;
    }

    .quick-nav-icon svg {
      width: 1.05rem;
      height: 1.05rem;
      display: block;
    }

    .quick-nav-icon--catalog {
      background: rgba(255, 255, 255, 0.1);
      color: rgba(255, 255, 255, 0.85);
    }

    .quick-nav-icon--catalog .quick-catalog-svg {
      width: 1.1rem;
      height: 1.1rem;
      opacity: 0.95;
    }

    .quick-catalog-label {
      font-size: 0.82rem;
      font-weight: 700;
      letter-spacing: 0.11em;
      text-transform: uppercase;
      color: rgba(252, 252, 252, 0.95);
    }

    .quick-link.quick-link--catalog {
      display: flex;
      transition: color 0.22s ease, background 0.22s ease;
    }

    .menu-drawer .quick-link::before {
      content: "";
      position: absolute;
      left: 0;
      top: 50%;
      transform: translateY(-50%);
      width: 3px;
      height: 1.35rem;
      border-radius: 2px;
      background: rgba(255, 255, 255, 0.45);
      opacity: 0;
      transition: opacity 0.22s ease;
      pointer-events: none;
    }

    .menu-drawer .quick-link:hover,
    .menu-drawer .quick-link:focus-visible {
      background: rgba(255, 255, 255, 0.07);
      transform: none;
      box-shadow: none;
    }

    .menu-drawer .quick-link.quick-link--catalog:hover,
    .menu-drawer .quick-link.quick-link--catalog:focus-visible {
      background: rgba(255, 255, 255, 0.08);
    }

    .menu-drawer .quick-link:hover::before,
    .menu-drawer .quick-link:focus-visible::before {
      opacity: 1;
    }

    .menu-drawer .quick-link:hover .quick-nav-icon,
    .menu-drawer .quick-link:focus-visible .quick-nav-icon {
      background: rgba(255, 255, 255, 0.1);
      color: rgba(255, 255, 255, 0.78);
    }

    .menu-drawer .quick-link.quick-link--catalog:hover .quick-catalog-svg,
    .menu-drawer .quick-link.quick-link--catalog:focus-visible .quick-catalog-svg {
      opacity: 1;
    }

    .menu-drawer .quick-link:focus-visible {
      outline: var(--focus-ring-width) solid var(--focus-ring);
      outline-offset: var(--focus-ring-offset);
    }

    .quick-link:focus-visible {
      outline: var(--focus-ring-width) solid var(--focus-ring);
      outline-offset: var(--focus-ring-offset);
    }

    .quick-link:focus:not(:focus-visible) {
      outline: none;
    }

    .quick-full {
      display: none;
      opacity: 0;
      transform: translateX(-10px);
      filter: blur(4px);
      transition: opacity 0.34s cubic-bezier(0.22, 1, 0.36, 1), transform 0.4s cubic-bezier(0.19, 1, 0.22, 1), filter 0.45s ease;
    }

    body.menu-open {
      overflow: hidden;
    }

    body.menu-open .menu-overlay {
      opacity: 1;
      pointer-events: auto;
    }

    body.menu-open .menu-drawer {
      width: var(--drawer-width);
      transform: scale(1);
      opacity: 1;
    }

    /* Expanded: header is one row (logo + brand + close), not logo+burger column */
    body.menu-open .menu-drawer-inner {
      padding-top: calc(
        0.7rem + var(--toolbar-inset-top) + var(--toolbar-logo-size) + var(--toolbar-expanded-head-gap)
      );
    }

    body.menu-open .menu-drawer .quick-links {
      margin-top: 0.15rem;
      padding-top: 0.45rem;
    }

    /* Expanded: add icon + text row on top of the same base rail styles */
    body.menu-open .menu-drawer .quick-link {
      justify-content: flex-start;
      gap: 0.75rem;
      min-height: 2.85rem;
      padding: 0.55rem 0.65rem 0.55rem 0.5rem;
      text-align: left;
    }

    body.menu-open .menu-drawer .quick-link--catalog {
      justify-content: flex-start;
      min-height: 3rem;
    }

    body.menu-open .quick-full {
      display: block;
      flex: 1;
      min-width: 0;
      opacity: 1;
      transform: translateX(0);
      filter: blur(0);
      font-size: 0.95rem;
      font-weight: 700;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      line-height: 1.35;
      color: rgba(255, 255, 255, 0.96);
    }

    body.menu-open .quick-full.quick-full--catalog {
      display: block;
      flex: 1;
      padding: 0;
      border-radius: 0;
      background: transparent;
      border: none;
      box-shadow: none;
    }

    /* Catalog inner span: same treatment as other items in the expanded menu */
    body.menu-open .quick-catalog-label {
      font-size: inherit;
      font-weight: inherit;
      letter-spacing: inherit;
      text-transform: inherit;
      color: inherit;
      text-shadow: none;
    }

    body.menu-open .quick-links .quick-link:nth-child(1) .quick-full {
      transition-delay: 0.1s;
    }

    body.menu-open .quick-links .quick-link:nth-child(2) .quick-full {
      transition-delay: 0.14s;
    }

    body.menu-open .quick-links .quick-link:nth-child(3) .quick-full {
      transition-delay: 0.2s;
    }

    body.menu-open .quick-links .quick-link:nth-child(4) .quick-full {
      transition-delay: 0.26s;
    }

    body.menu-open .quick-links .quick-link:nth-child(5) .quick-full {
      transition-delay: 0.32s;
    }

    /* Catalog: light bar (NEWS-style) + DEBIT / CREDIT / NFC segments */
    .catalog-tabs-shell {
      width: 100%;
      /* Positive top margin: negative values pull this strip under the header pills on narrow layouts */
      margin: 0.4rem 0 0.5rem;
      padding: 0.5rem 0.45rem;
      background: var(--catalog-tabs-bar);
      border-radius: var(--radius-sm);
      border: 1px solid rgba(0, 0, 0, 0.12);
      scroll-margin-top: 0.75rem;
    }

    .catalog-tabs-shell .group-switch {
      display: flex;
      justify-content: stretch;
      align-items: stretch;
      gap: 0.4rem;
      flex-wrap: nowrap;
      margin: 0;
    }

    @media (max-width: 520px) {
      .catalog-tabs-shell .group-switch {
        flex-wrap: wrap;
      }
    }

    .catalog-tabs-shell .group-item {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 0.28rem;
      flex: 1 1 0;
      min-width: 0;
    }

    @media (max-width: 520px) {
      .catalog-tabs-shell .group-item {
        flex: 1 1 calc(50% - 0.25rem);
        min-width: 108px;
      }
    }

    .catalog-tabs-shell .group-btn {
      width: 100%;
      min-width: 0;
      padding: 0.58rem 0.45rem 0.52rem;
      border: 1px solid rgba(0, 0, 0, 0.32);
      border-radius: 8px;
      background: #ffffff;
      color: #141414;
      font-weight: 700;
      font-size: 0.82rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      cursor: pointer;
      position: relative;
      box-shadow: none;
      transition: color 0.18s ease, background 0.18s ease, border-color 0.18s ease;
    }

    .catalog-tabs-shell .group-btn:hover:not([aria-selected="true"]) {
      color: #0a0a0a;
      background: #f7f7f7;
      border-color: rgba(0, 0, 0, 0.48);
    }

    .catalog-tabs-shell .group-btn:focus-visible {
      outline: var(--focus-ring-width) solid rgba(0, 0, 0, 0.35);
      outline-offset: 2px;
    }

    .catalog-tabs-shell .group-btn[aria-selected="true"] {
      color: #fafafa;
      background: #141414;
      border: 1px solid #0a0a0a;
      box-shadow: none;
    }

    .catalog-tabs-shell .group-hint {
      font-size: 0.66rem;
      color: rgba(0, 0, 0, 0.48);
      text-transform: lowercase;
      min-height: 1em;
    }

    .catalog-tabs-shell .group-item:has([aria-selected="true"]) .group-hint {
      visibility: hidden;
    }

    .subcategory-nav {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      margin: 0 0 1rem;
    }

    .catalog-panel-body {
      display: flex;
      flex-direction: column;
      gap: 0;
      margin-bottom: 0.25rem;
      min-height: 0;
    }

    .catalog-subnav {
      flex-shrink: 0;
      margin: 0;
      padding: 0.35rem 0 0.65rem;
      background: var(--bg);
      border-bottom: 1px solid rgba(255, 255, 255, 0.14);
      box-shadow: 0 10px 24px rgba(0, 0, 0, 0.42);
      position: relative;
      z-index: 4;
    }

    @keyframes catalog-loader-spin {
      to {
        transform: rotate(360deg);
      }
    }

    /* Center loader in the catalog viewport (middle of the page below tabs) */
    html.catalog-pending .catalog-products:empty {
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: max(12rem, var(--catalog-products-max-h));
      padding-top: 0;
      padding-bottom: 0;
    }

    /* Apple-style indeterminate ring (thin track + bright leading edge) */
    html.catalog-pending .catalog-products:empty::before {
      content: "";
      display: block;
      box-sizing: border-box;
      flex-shrink: 0;
      width: 1.35rem;
      height: 1.35rem;
      margin: 0;
      border-radius: 50%;
      border: 2px solid rgba(255, 255, 255, 0.1);
      border-top-color: rgba(255, 255, 255, 0.78);
      animation: catalog-loader-spin 0.72s linear infinite;
    }

    @media (prefers-reduced-motion: reduce) {
      html.catalog-pending .catalog-products:empty::before {
        animation: none;
        border-color: rgba(255, 255, 255, 0.22);
        border-top-color: rgba(255, 255, 255, 0.5);
        opacity: 0.85;
      }
    }

    .catalog-products {
      flex: 1 1 auto;
      min-height: 0;
      overflow-x: hidden;
      overflow-y: auto;
      overscroll-behavior-y: contain;
      -webkit-overflow-scrolling: touch;
      /* Do not set touch-action: pan-y — on Android Chrome it can steal vertical pans when
         overflow is inactive or during flex/max-height quirks, so neither inner nor page scrolls. */
      max-height: calc(100vh - 15rem);
      max-height: var(--catalog-products-max-h);
      padding: 0.4rem 0.15rem 1.25rem 0;
      margin-right: -4px;
      padding-right: 0.35rem;
      scrollbar-width: thin;
      scrollbar-color: rgba(255, 255, 255, 0.28) transparent;
    }

    .catalog-products:focus {
      outline: none;
    }

    .catalog-products:focus-visible {
      box-shadow: inset 0 0 0 2px var(--focus-ring);
      border-radius: var(--radius-sm);
    }

    .catalog-products::-webkit-scrollbar {
      width: 8px;
    }

    .catalog-products::-webkit-scrollbar-track {
      background: transparent;
    }

    .catalog-products::-webkit-scrollbar-thumb {
      background: rgba(255, 255, 255, 0.22);
      border-radius: 999px;
      border: 2px solid transparent;
      background-clip: padding-box;
    }

    /* Nested overflow scroll on .catalog-products is unreliable on Android Chrome (incl. Pixel),
       including landscape where width > 640px. Let the document scroll instead. */
    @media (max-width: 1024px) {
      .catalog-products {
        flex: none;
        min-height: 0;
        height: auto;
        max-height: none;
        overflow-x: hidden;
        overflow-y: visible;
        overscroll-behavior-y: auto;
      }

      html.catalog-pending .catalog-products:empty {
        min-height: min(50vh, 18rem);
        height: auto;
        max-height: none;
      }
    }

    .catalog-product-group {
      margin-bottom: 1.35rem;
    }

    .catalog-product-group:last-child {
      margin-bottom: 0;
    }

    .catalog-product-group[hidden] {
      display: none !important;
    }

    .catalog-group-title {
      margin: 0 0 0.65rem;
      padding: 0.5rem 0.85rem;
      font-size: 0.72rem;
      font-weight: 800;
      letter-spacing: 0.11em;
      text-transform: uppercase;
      color: var(--on-light);
      background: var(--catalog-strip);
      border-radius: 8px;
      border: 1px solid rgba(0, 0, 0, 0.12);
    }

    .catalog-group-items {
      display: flex;
      flex-direction: column;
      gap: 0.65rem;
    }

    .catalog-group-items .product {
      margin-bottom: 0;
    }

    .subcategory-btn {
      font-family: inherit;
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      padding: 0.42rem 0.72rem;
      border-radius: 999px;
      border: 1px solid rgba(255, 255, 255, 0.26);
      background: transparent;
      color: var(--muted);
      cursor: pointer;
      transition: color 0.22s ease, background 0.22s ease, border-color 0.22s ease;
    }

    .subcategory-btn:hover {
      color: var(--text);
      border-color: rgba(255, 255, 255, 0.5);
      background: rgba(255, 255, 255, 0.04);
    }

    .subcategory-btn[aria-selected="true"] {
      color: var(--on-light);
      border-color: transparent;
      background: var(--catalog-strip);
    }

    .panel {
      display: none;
      animation: fade 0.2s ease;
    }

    .panel.is-active {
      display: block;
    }

    @keyframes fade {
      from { opacity: 0; transform: translateY(4px); }
      to { opacity: 1; transform: translateY(0); }
    }

    .section-title {
      display: block;
      width: 100%;
      padding: 0.65rem 1rem;
      border-radius: var(--radius-sm);
      font-size: 0.8rem;
      font-weight: 800;
      letter-spacing: 0.055em;
      margin: 0 0 1rem;
    }

    .panel .section-title {
      background: var(--surface);
      color: var(--text);
      border: 1px solid rgba(255, 255, 255, 0.14);
      border-left: 3px solid var(--catalog-strip);
      box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
      letter-spacing: 0.045em;
    }

    main#news > .section-title {
      background: var(--catalog-strip);
      color: var(--on-light);
      border: none;
      box-shadow: none;
      letter-spacing: 0.14em;
      margin-bottom: 1.05rem;
    }

    .product {
      display: flex;
      align-items: center;
      gap: 1rem;
      background: var(--surface);
      padding: 1rem 1.1rem;
      border-radius: var(--radius-lg);
      border: 1px solid rgba(255, 255, 255, 0.12);
      box-shadow: var(--shadow);
      margin-bottom: 0.75rem;
    }

    .product[hidden] {
      display: none !important;
    }

    .product-icon {
      width: 48px;
      height: 48px;
      border-radius: 13px;
      background: #262626;
      flex-shrink: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      isolation: isolate;
    }

    /* PNG is black on white → invert gives white art on black “page”. Lighten drops that black
       against the same #262626 tile so only the card strokes stay visible (no black box). */
    .product-card-img {
      display: block;
      width: 30px;
      height: 30px;
      object-fit: contain;
      flex-shrink: 0;
      filter: invert(1);
      mix-blend-mode: lighten;
      opacity: 0.92;
      pointer-events: none;
    }

    .product-main {
      flex: 1;
      min-width: 0;
      display: flex;
      flex-direction: row;
      flex-wrap: nowrap;
      align-items: center;
      column-gap: 0.75rem;
    }

    .product-name {
      font-size: 0.9rem;
      font-weight: 700;
      line-height: 1.35;
      margin: 0;
      flex: 0 1 auto;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      color: var(--text);
    }

    .product-desc {
      margin: 0;
      padding-left: 0.65rem;
      border-left: 1px solid rgba(255, 255, 255, 0.2);
      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
      font-size: 0.84rem;
      font-weight: 500;
      color: #d8d8d8;
      line-height: 1.4;
      flex: 1 1 0;
      min-width: 0;
      text-transform: none;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      font-variant-numeric: tabular-nums;
      letter-spacing: 0.04em;
    }

    .product-side {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      flex-shrink: 0;
      align-self: center;
    }

    .price-tag {
      background: #262626;
      color: var(--text);
      padding: 0.35rem 0.65rem;
      border-radius: 999px;
      font-weight: 800;
      font-size: 0.85rem;
    }

    .btn-outline {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      line-height: 1.2;
      padding: 0.5rem 0.92rem;
      border-radius: 12px;
      border: 1px solid rgba(255, 255, 255, 0.7);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
      background: transparent;
      color: var(--text);
      font-weight: 700;
      font-size: 0.75rem;
      letter-spacing: 0.02em;
      cursor: pointer;
      transition: background 0.22s ease, color 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;
    }

    .btn-outline:hover {
      color: var(--on-light);
      background: var(--stroke);
      border-color: var(--stroke);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55), 0 8px 22px rgba(0, 0, 0, 0.32);
      transform: translateY(-1px);
    }

    .btn-outline:focus-visible,
    .btn-solid:focus-visible {
      outline: var(--focus-ring-width) solid var(--focus-ring);
      outline-offset: var(--focus-ring-offset);
    }

    .btn-solid {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      line-height: 1.2;
      padding: 0.5rem 0.92rem;
      border-radius: 12px;
      border: 1px solid rgba(255, 255, 255, 0.7);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);
      background: var(--stroke);
      color: var(--on-light);
      font-weight: 700;
      font-size: 0.75rem;
      letter-spacing: 0.02em;
      cursor: pointer;
      text-decoration: none;
      transition: background 0.22s ease, color 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;
    }

    .btn-solid:hover {
      background: transparent;
      color: var(--text);
      border-color: var(--stroke);
      box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.55), 0 8px 22px rgba(0, 0, 0, 0.32);
      transform: translateY(-1px);
    }

    .subheading {
      font-weight: 800;
      font-size: 0.95rem;
      margin: 1.25rem 0 0.5rem;
    }

    .news-lead {
      color: var(--muted);
      font-size: 0.92rem;
      margin: -0.35rem 0 1.35rem;
      max-width: 54rem;
      line-height: 1.6;
    }

    .news-layout {
      max-width: 1160px;
      margin: 0 auto;
      display: grid;
      gap: 1rem;
    }

    @media (min-width: 980px) {
      .news-layout {
        grid-template-columns: minmax(0, 360px) minmax(0, 1fr);
        grid-template-areas:
          "resources resources"
          "pinned feed";
        align-items: start;
      }
      .news-block--resources { grid-area: resources; }
      .news-block--pinned { grid-area: pinned; }
      .news-block--feed { grid-area: feed; }
    }

    .news-block {
      margin: 0;
      padding: 0.95rem 1rem 0.9rem;
      border-radius: 14px;
      border: 1px solid rgba(255, 255, 255, 0.14);
      background: rgba(255, 255, 255, 0.015);
      box-shadow: none;
    }

    .news-block:last-of-type {
      margin-bottom: 0;
    }

    .news-section-title {
      display: flex;
      align-items: center;
      gap: 0.55rem;
      margin: 0 0 0.7rem;
      font-size: 0.74rem;
      font-weight: 700;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: rgba(255, 255, 255, 0.96);
    }

    .news-section-title::before {
      content: "";
      width: 0.4rem;
      height: 0.4rem;
      border-radius: 999px;
      border: 1px solid rgba(255, 255, 255, 0.72);
      background: rgba(255, 255, 255, 0.28);
      box-shadow: none;
    }

    .news-pinned-grid {
      display: flex;
      flex-direction: column;
      gap: 0.3rem;
      margin-bottom: 0;
    }

    .news-block-scroll {
      overflow-y: auto;
      padding-right: 0.2rem;
      scrollbar-width: thin;
      scrollbar-color: rgba(255, 255, 255, 0.26) transparent;
    }

    .news-block-scroll--resources {
      max-height: 120px;
    }

    .news-block-scroll--pinned {
      max-height: 300px;
    }

    .news-block--feed .news-block-scroll {
      overflow: visible;
      padding-right: 0;
    }

    .news-block-scroll::-webkit-scrollbar {
      width: 8px;
    }

    .news-block-scroll::-webkit-scrollbar-track {
      background: transparent;
    }

    .news-block-scroll::-webkit-scrollbar-thumb {
      background: rgba(255, 255, 255, 0.2);
      border-radius: 999px;
      border: 2px solid transparent;
      background-clip: padding-box;
    }

    .news-list {
      display: flex;
      flex-direction: column;
      gap: 0;
      border-top: 1px solid rgba(255, 255, 255, 0.14);
    }

    .news-item {
      background: transparent;
      padding: 0.95rem 0 1rem;
      border-radius: 10px;
      border: none;
      border-bottom: 1px solid rgba(255, 255, 255, 0.11);
      box-shadow: none;
    }

    .news-item--pinned {
      border-bottom: none;
      padding: 0.7rem 0 0.8rem;
      border-left: none;
      background: transparent;
      border-radius: 10px;
      border-bottom: 1px solid rgba(255, 255, 255, 0.09);
    }

    .news-item-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 0.75rem;
      margin-bottom: 0.3rem;
    }

    .news-badge {
      display: inline-flex;
      align-items: center;
      font-size: 0.62rem;
      font-weight: 700;
      letter-spacing: 0.09em;
      text-transform: uppercase;
      border-radius: 999px;
      padding: 0.14rem 0.38rem;
      color: rgba(255, 255, 255, 0.98);
      border: 1px solid rgba(255, 255, 255, 0.62);
      background: rgba(255, 255, 255, 0.12);
      white-space: nowrap;
    }

    .news-item time {
      display: block;
      font-size: 0.72rem;
      font-weight: 600;
      letter-spacing: 0.05em;
      text-transform: uppercase;
      color: rgba(255, 255, 255, 0.72);
      margin-bottom: 0.35rem;
    }

    .news-item h3 {
      margin: 0 0 0.35rem;
      font-size: 0.96rem;
      font-weight: 700;
      letter-spacing: 0.005em;
    }

    .news-item p {
      margin: 0;
      font-size: 0.89rem;
      color: rgba(255, 255, 255, 0.94);
      line-height: 1.58;
    }

    .news-item-body {
      display: -webkit-box;
      -webkit-line-clamp: 3;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }

    .news-item.is-expanded .news-item-body {
      display: block;
      -webkit-line-clamp: unset;
      overflow: visible;
    }

    .news-expand-btn {
      margin-top: 0.45rem;
      padding: 0.24rem 0.58rem;
      border: 1px solid rgba(255, 255, 255, 0.6);
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.16);
      color: rgba(255, 255, 255, 1);
      font-family: inherit;
      font-size: 0.72rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      cursor: pointer;
      transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
    }

    .news-expand-btn:hover {
      color: #ffffff;
      border-color: rgba(255, 255, 255, 0.9);
      background: rgba(255, 255, 255, 0.28);
    }

    .news-item code {
      font-size: 0.82em;
      padding: 0.12em 0.35em;
      border-radius: 6px;
      background: rgba(255, 255, 255, 0.08);
    }

    .resource-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      margin-top: 0.2rem;
      margin-bottom: 0;
    }

    .resource-link {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      text-decoration: none;
      border-radius: 999px;
      border: 1px solid rgba(255, 255, 255, 0.45);
      padding: 0.32rem 0.68rem;
      color: var(--text);
      background: rgba(255, 255, 255, 0.07);
      transition: border-color 0.2s ease, transform 0.2s ease, background 0.2s ease;
    }

    .resource-link:hover {
      border-color: rgba(255, 255, 255, 0.9);
      transform: translateY(-1px);
      background: rgba(255, 255, 255, 0.2);
    }

    .resource-link strong {
      font-size: 0.71rem;
      font-weight: 700;
      letter-spacing: 0.09em;
      text-transform: uppercase;
    }

    .resource-link span {
      display: none;
    }

    /* —— Entry notice (first visit) —— */
    /* Inline script may add this before paint so the page stays behind a dim layer until entry-notice.js resolves. */
    #entry-notice-blocker {
      position: fixed;
      inset: 0;
      z-index: 99997;
      background: rgba(0, 0, 0, 0.78);
      pointer-events: auto;
    }

    html.entry-notice-pending body {
      overflow: hidden;
    }

    body.entry-notice-open {
      overflow: hidden;
    }

    .entry-notice {
      position: fixed;
      inset: 0;
      z-index: 99998;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 1rem;
      font-family: var(--font);
    }

    .entry-notice__backdrop {
      position: absolute;
      inset: 0;
      border: none;
      padding: 0;
      margin: 0;
      background: rgba(0, 0, 0, 0.72);
      cursor: pointer;
    }

    .entry-notice__dialog {
      position: relative;
      z-index: 1;
      width: 100%;
      max-width: 32rem;
      max-height: min(90dvh, 640px);
      display: flex;
      flex-direction: column;
      background: var(--surface);
      border-radius: var(--radius-lg);
      border: 1px solid rgba(255, 255, 255, 0.12);
      box-shadow: var(--shadow);
      overflow: hidden;
    }

    .entry-notice__head {
      display: flex;
      align-items: center;
      gap: 0.65rem;
      padding: 0.75rem 1rem;
      background: linear-gradient(180deg, var(--toolbar-panel-top) 0%, var(--toolbar-panel-bot) 100%);
      border-bottom: 1px solid var(--toolbar-panel-edge);
    }

    .entry-notice__head-icon {
      display: flex;
      color: rgba(255, 255, 255, 0.52);
      flex-shrink: 0;
    }

    .entry-notice__title {
      flex: 1;
      margin: 0;
      font-size: 0.82rem;
      font-weight: 700;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      color: var(--text);
      line-height: 1.35;
    }

    .entry-notice__close {
      flex-shrink: 0;
      width: 2rem;
      height: 2rem;
      border: none;
      border-radius: var(--radius-sm);
      background: rgba(255, 255, 255, 0.06);
      color: var(--muted);
      font-size: 1.35rem;
      line-height: 1;
      cursor: pointer;
      transition: background 0.2s ease, color 0.2s ease;
    }

    .entry-notice__close:hover {
      background: rgba(255, 255, 255, 0.11);
      color: var(--text);
    }

    .entry-notice__body {
      padding: 1rem 1.1rem;
      overflow-y: auto;
      color: var(--text);
      font-size: 0.86rem;
      line-height: 1.55;
    }

    /* Message body: reads as editorial copy, not a second toolbar title */
    .entry-notice__warning-card {
      display: flex;
      gap: 0.75rem;
      align-items: flex-start;
      margin: 0 0 1.15rem;
      padding: 1rem 1.05rem 1.05rem;
      border-radius: var(--radius-sm);
      border: 1px solid rgba(255, 255, 255, 0.12);
      background: linear-gradient(165deg, rgba(30, 30, 32, 0.95) 0%, rgba(18, 18, 20, 0.98) 100%);
      box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.06),
        0 4px 20px rgba(0, 0, 0, 0.35);
    }

    .entry-notice__warning-icon {
      flex-shrink: 0;
      display: flex;
      margin-top: 0.12rem;
      color: rgba(180, 190, 200, 0.55);
    }

    .entry-notice__warning-text {
      margin: 0;
      font-size: 0.93rem;
      font-weight: 500;
      line-height: 1.58;
      letter-spacing: 0.02em;
      text-transform: none;
      font-variant: normal;
      color: rgba(236, 236, 238, 0.98);
    }

    .entry-notice__svg {
      display: block;
    }

    .entry-notice__row {
      display: grid;
      gap: 0.35rem;
      margin-bottom: 0.75rem;
    }

    .entry-notice__row-head {
      display: flex;
      align-items: center;
      gap: 0.45rem;
    }

    .entry-notice__row-icon {
      display: flex;
      flex-shrink: 0;
      color: rgba(255, 255, 255, 0.42);
    }

    .entry-notice__row-label {
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--muted);
    }

    .entry-notice__link {
      display: inline-flex;
      align-items: flex-start;
      gap: 0.4rem;
      max-width: 100%;
      color: #7eb8ff;
      word-break: break-all;
      text-decoration: underline;
      text-underline-offset: 2px;
    }

    .entry-notice__link-icon {
      display: flex;
      flex-shrink: 0;
      margin-top: 0.1rem;
      color: rgba(126, 184, 255, 0.75);
    }

    .entry-notice__link-text {
      min-width: 0;
    }

    .entry-notice__link:hover {
      color: #b8d6ff;
    }

    .entry-notice__link:hover .entry-notice__link-icon {
      color: rgba(184, 214, 255, 0.9);
    }

    .entry-notice__subhead {
      display: flex;
      align-items: center;
      gap: 0.45rem;
      margin: 0.85rem 0 0.45rem;
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--muted);
    }

    .entry-notice__subhead-icon {
      display: flex;
      flex-shrink: 0;
      color: rgba(255, 255, 255, 0.38);
    }

    .entry-notice__subhead-text {
      line-height: 1.2;
    }

    .entry-notice__mirror-list {
      display: flex;
      flex-direction: column;
      gap: 0.35rem;
    }

    .entry-notice__mirror-lead {
      display: flex;
      flex-shrink: 0;
      align-items: center;
      color: rgba(255, 255, 255, 0.38);
    }

    .entry-notice__mirror-row {
      display: flex;
      align-items: center;
      gap: 0.5rem;
      padding: 0.45rem 0.55rem;
      background: rgba(255, 255, 255, 0.05);
      border-radius: var(--radius-sm);
      border: 1px solid rgba(255, 255, 255, 0.08);
    }

    .entry-notice__mirror-row--all {
      margin-top: 0.15rem;
      background: rgba(255, 255, 255, 0.08);
    }

    .entry-notice__mirror-url {
      flex: 1;
      font-size: 0.78rem;
      word-break: break-all;
      color: rgba(255, 255, 255, 0.88);
    }

    .entry-notice__copy {
      flex-shrink: 0;
      width: 2rem;
      height: 2rem;
      border: 1px solid rgba(100, 160, 255, 0.45);
      border-radius: 6px;
      background: rgba(80, 130, 220, 0.2);
      color: #9ec5ff;
      font-size: 0.95rem;
      line-height: 1;
      cursor: pointer;
      transition: background 0.2s ease, border-color 0.2s ease;
    }

    .entry-notice__copy:hover {
      background: rgba(80, 130, 220, 0.35);
      border-color: rgba(140, 180, 255, 0.7);
    }

    .entry-notice__bookmark {
      margin-top: 1rem;
      padding: 0.75rem 0.85rem;
      border-radius: var(--radius-sm);
      border: 1px solid rgba(255, 255, 255, 0.12);
      background: rgba(0, 0, 0, 0.25);
      font-size: 0.82rem;
    }

    .entry-notice__bookmark p {
      margin: 0 0 0.5rem;
    }

    .entry-notice__bookmark-list {
      margin: 0.35rem 0 0.65rem;
      padding-left: 1.1rem;
      color: rgba(255, 255, 255, 0.88);
    }

    .entry-notice__bookmark-list kbd {
      display: inline-block;
      padding: 0.12em 0.4em;
      border-radius: 4px;
      border: 1px solid rgba(255, 255, 255, 0.25);
      background: rgba(255, 255, 255, 0.08);
      font-size: 0.85em;
      font-family: ui-monospace, monospace;
    }

    .entry-notice__bookmark-url code {
      display: inline-block;
      margin-top: 0.25rem;
      padding: 0.35rem 0.5rem;
      font-size: 0.72rem;
      word-break: break-all;
      border-radius: 6px;
      background: rgba(255, 255, 255, 0.07);
      color: rgba(255, 255, 255, 0.9);
    }

    .entry-notice__foot {
      display: flex;
      flex-wrap: wrap;
      gap: 0.5rem;
      justify-content: flex-end;
      padding: 0.75rem 1rem;
      border-top: 1px solid rgba(255, 255, 255, 0.1);
      background: rgba(0, 0, 0, 0.2);
    }

    .entry-notice__btn {
      font-family: inherit;
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      padding: 0.52rem 1rem;
      border-radius: 999px;
      cursor: pointer;
      border: 1px solid transparent;
      transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
    }

    .entry-notice__btn--ghost {
      border-color: rgba(255, 255, 255, 0.35);
      background: transparent;
      color: var(--text);
    }

    .entry-notice__btn--ghost:hover {
      border-color: rgba(255, 255, 255, 0.55);
      background: rgba(255, 255, 255, 0.06);
    }

    .entry-notice__btn--muted {
      border-color: rgba(255, 255, 255, 0.2);
      background: rgba(255, 255, 255, 0.08);
      color: var(--muted);
    }

    .entry-notice__btn--muted:hover {
      color: var(--text);
      background: rgba(255, 255, 255, 0.12);
    }

    /* —— Phones & narrow viewports (catalog + news) —— */
    @media (max-width: 640px) {
      :root {
        --rail-width: 56px;
        --toolbar-logo-size: 52px;
        --toolbar-inset-top: 0.7rem;
        --toolbar-icon-slot: 2rem;
        --toolbar-logo-burger-gap: 0.2rem;
        --toolbar-expanded-head-gap: 0.38rem;
        --catalog-products-max-h: calc(100vh - 11.5rem);
        --catalog-products-max-h: calc(100dvh - 11.5rem);
        --drawer-width: min(90vw, 300px);
      }

      body {
        padding-left: calc(var(--rail-width) + env(safe-area-inset-left, 0px));
        padding-right: env(safe-area-inset-right, 0px);
        padding-bottom: env(safe-area-inset-bottom, 0px);
      }

      .page {
        padding-left: 0.65rem;
        padding-right: max(0.65rem, env(safe-area-inset-right, 0px));
        padding-bottom: max(2rem, env(safe-area-inset-bottom, 0px));
      }

      .top {
        flex-direction: column;
        align-items: stretch;
        gap: 0.55rem;
        margin-bottom: 0.75rem;
      }

      .top-left {
        width: 100%;
        justify-content: flex-start;
        gap: 0.45rem;
      }

      .logo {
        margin-left: 0;
        flex: 1;
        min-width: 0;
        justify-content: center;
      }

      .logo-svg {
        height: clamp(4.1rem, 34vw, 6.5rem);
        width: clamp(4.1rem, 34vw, 6.5rem);
        max-width: min(240px, 78vw);
        max-height: min(240px, 78vw);
      }

      .top-actions {
        width: 100%;
        justify-content: stretch;
        gap: 0.45rem;
      }

      .pill {
        flex: 1 1 0;
        justify-content: center;
        min-width: 0;
        padding: 0.52rem 0.55rem;
        font-size: 0.68rem;
        letter-spacing: 0.025em;
      }

      .catalog-tabs-shell {
        margin: 0.5rem -0.2rem 0.45rem;
        width: calc(100% + 0.4rem);
        padding: 0.4rem 0.32rem;
      }

      /* Above in-flow header/catalog paint order (WebKit); drawer/overlay stay below at 29–30 */
      .toolbar-logo,
      .menu-trigger,
      .menu-brand-expanded {
        z-index: 100;
      }

      /* Slightly smaller than desktop so a thin air gap remains inside pad vs logo + close */
      .menu-brand-expanded {
        font-size: 1.3rem;
        letter-spacing: 0.06em;
        line-height: 1.06;
        padding-left: calc(
          (var(--rail-width) - var(--toolbar-logo-size)) / 2 +
            var(--toolbar-logo-size) +
            0.55rem +
            1rem +
            0.35rem +
            env(safe-area-inset-left, 0px)
        );
        padding-right: calc(
          var(--toolbar-icon-slot) + 14px + 0.55rem + 1.65rem + 0.35rem + env(safe-area-inset-right, 0px)
        );
      }

      .catalog-tabs-shell .group-switch {
        flex-wrap: wrap;
      }

      .catalog-tabs-shell .group-item {
        flex: 1 1 calc(50% - 0.22rem);
        min-width: 96px;
      }

      .catalog-tabs-shell .group-btn {
        font-size: 0.72rem;
        padding: 0.5rem 0.3rem 0.46rem;
        letter-spacing: 0.07em;
      }

      .catalog-tabs-shell .group-hint {
        font-size: 0.6rem;
      }

      .subcategory-nav {
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        gap: 0.38rem;
        margin-bottom: 0.7rem;
        padding-bottom: 0.25rem;
      }

      .subcategory-nav::-webkit-scrollbar {
        display: none;
      }

      .subcategory-btn {
        flex-shrink: 0;
        font-size: 0.66rem;
        padding: 0.36rem 0.58rem;
      }

      .catalog-products {
        padding: 0.35rem 0.1rem 1rem 0;
      }

      .panel .section-title {
        font-size: 0.72rem;
        padding: 0.52rem 0.7rem;
        margin-bottom: 0.85rem;
      }

      .catalog-group-title {
        font-size: 0.66rem;
        padding: 0.42rem 0.62rem;
      }

      .product {
        flex-direction: column;
        align-items: stretch;
        gap: 0.65rem;
        padding: 0.82rem 0.85rem;
      }

      .product-icon {
        width: 44px;
        height: 44px;
        border-radius: 12px;
      }

      .product-card-img {
        width: 27px;
        height: 27px;
      }

      .product-main {
        flex-direction: column;
        align-items: flex-start;
        flex-wrap: wrap;
        gap: 0.35rem;
        width: 100%;
      }

      .product-name {
        font-size: 0.8rem;
        width: 100%;
        line-height: 1.3;
      }

      .product-desc {
        width: 100%;
        padding-left: 0;
        border-left: none;
        border-top: 1px solid rgba(255, 255, 255, 0.12);
        padding-top: 0.42rem;
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
        font-size: 0.78rem;
        line-height: 1.45;
      }

      .product-side {
        width: 100%;
        justify-content: space-between;
        align-self: stretch;
        flex-wrap: wrap;
        gap: 0.4rem;
        padding-top: 0.4rem;
        margin-top: 0.1rem;
        border-top: 1px solid rgba(255, 255, 255, 0.08);
      }

      .price-tag {
        font-size: 0.8rem;
      }

      .btn-outline,
      .btn-solid {
        min-height: 44px;
        padding: 0.42rem 0.8rem;
        line-height: 1.2;
        -webkit-appearance: none;
        appearance: none;
      }

      .menu-drawer-inner {
        padding-bottom: calc(1rem + env(safe-area-inset-bottom, 0px)) !important;
      }

      main#news > .section-title {
        margin-bottom: 0.85rem;
        font-size: 0.76rem;
        padding: 0.55rem 0.85rem;
      }

      .news-lead {
        font-size: 0.84rem;
        margin-bottom: 0.95rem;
        line-height: 1.55;
      }

      .news-layout {
        gap: 0.75rem;
      }

      .news-block {
        padding: 0.78rem 0.7rem 0.72rem;
        border-radius: 12px;
      }

      .news-block-scroll--resources {
        max-height: min(28dvh, 140px);
      }

      .news-block-scroll--pinned {
        max-height: min(36dvh, 260px);
      }

      .news-item {
        padding: 0.82rem 0 0.88rem;
      }

      .news-item-head {
        flex-wrap: wrap;
        align-items: flex-start;
        gap: 0.35rem;
      }

      .news-item h3 {
        font-size: 0.88rem;
      }

      .news-item p {
        font-size: 0.84rem;
        line-height: 1.55;
      }

      .resource-grid {
        gap: 0.38rem;
      }

      .resource-link {
        flex: 1 1 calc(50% - 0.22rem);
        min-width: 0;
        padding: 0.4rem 0.5rem;
      }

      .resource-link strong {
        font-size: 0.66rem;
      }

      .entry-notice {
        padding: max(0.65rem, env(safe-area-inset-top, 0px)) max(0.65rem, env(safe-area-inset-right, 0px))
          max(0.65rem, env(safe-area-inset-bottom, 0px)) max(0.65rem, env(safe-area-inset-left, 0px));
      }

      .entry-notice__dialog {
        max-height: min(
          88dvh,
          calc(100dvh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 1.5rem)
        );
      }

      .entry-notice__foot {
        flex-direction: column-reverse;
        align-items: stretch;
      }

      .entry-notice__btn {
        width: 100%;
        justify-content: center;
      }
    }

    @media (max-width: 380px) {
      :root {
        --rail-width: 52px;
        --toolbar-logo-size: 48px;
      }

      .catalog-tabs-shell .group-btn {
        font-size: 0.66rem;
        letter-spacing: 0.05em;
      }

      .pill {
        font-size: 0.62rem;
        padding: 0.48rem 0.4rem;
      }
    }
