/* ─────────────────────────────────────────────────────────────────────────────
   Hide scrollbars — application-wide

   Scrollbars are hidden everywhere: the page, the sidebars, every overflow
   pane, modals, dropdowns and third-party widgets. SCROLLING ITSELF IS
   UNTOUCHED — wheel, trackpad, touch, keyboard (arrows / PgUp / PgDn / Home /
   End / space) and programmatic scrollIntoView all behave exactly as before.
   Only the painted bar is gone. Nothing here sets `overflow`, so no element
   loses the ability to scroll.

   Loaded in all eight layouts (themes/BC/Layout/app, modules/Layout/app,
   modules/Layout/user, modules/Layout/admin/{app,empty} and the Tour/Car/Hotel
   supplier portal layouts). There is no single global head partial and
   Assets::css() is only rendered by four of them, so it is linked explicitly —
   the same way brand-colors.css, portal-mono.css and admin-mono.css are wired.
   ADD THIS LINK TO ANY NEW LAYOUT or that surface keeps its scrollbars.

   This generalises what the codebase already did piecemeal — .wizard-stepper,
   .choice-grid.scroll, .tm-sf-suggestions, .vc-grid and friends each hid their
   own scrollbar locally. Those local rules are now redundant but harmless, and
   are left alone rather than swept up in a change about something else.

   TRADE-OFF, ACCEPTED DELIBERATELY: a scrollbar is also an affordance (it says
   "there is more below") and a control (you can drag it). Both are given up
   here. Long admin tables and forms are the surfaces where that costs the most,
   since they are driven by mouse. If a specific pane ever needs the cue back,
   re-expose it there rather than deleting this file.
   ───────────────────────────────────────────────────────────────────────────── */

/* Firefox 64+ and IE/legacy-Edge. `*` reaches every scroll container, including
   ones created by third-party widgets we do not have selectors for. */
*,
*::before,
*::after {
    scrollbar-width    : none;  /* Firefox */
    -ms-overflow-style : none;  /* IE 10+ / legacy Edge */
}

/* Chromium, WebKit and current Edge.
   `display:none` on the scrollbar pseudo-element removes the bar and the space
   it occupied. Specificity is not a concern despite the `*`: rules elsewhere
   that style a scrollbar (e.g. `.main-sidebar::-webkit-scrollbar{width:4px}`,
   `.tm-search-layout__sidebar::-webkit-scrollbar-thumb{...}`) set width/colour
   and never `display`, and the cascade resolves per property — so `display:none`
   still wins on the property that matters, without !important. */
*::-webkit-scrollbar,
*::-webkit-scrollbar-track,
*::-webkit-scrollbar-thumb,
*::-webkit-scrollbar-corner {
    display : none;
    width   : 0;
    height  : 0;
}

/* html/body are their own scrolling boxes and some browsers paint the viewport
   scrollbar from the root rather than from a matched `*` rule. */
html, body {
    scrollbar-width    : none;
    -ms-overflow-style : none;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar {
    display : none;
    width   : 0;
    height  : 0;
}
