/* ==========================================================================
   Base — reset, typography, links, form controls, scrollbars, animations,
   and a few helpers. No component or page styling lives here.
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--pb-bg);
  color: var(--pb-text);
  font-family: var(--pb-font-body);
  font-size: 16px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
body.pb-lock { overflow: hidden; }

h1, h2, h3, h4, h5, h6 { margin: 0; font-family: var(--pb-font-head); font-weight: 800; line-height: 1.2; }
p { margin: 0; }
ul, ol { margin: 0; padding: 0; list-style: none; }

a { color: var(--pb-link); text-decoration: none; }
a:hover { color: var(--pb-link-hover); }

img { max-width: 100%; }

button, input, select, textarea { font-family: inherit; font-size: inherit; color: inherit; }
button { cursor: pointer; }
input::placeholder, textarea::placeholder { color: var(--pb-text-faint); }

:focus-visible { outline: 2px solid var(--pb-primary); outline-offset: 2px; }

/* Thin scrollbars that only show on hover */
* { scrollbar-width: thin; scrollbar-color: transparent transparent; }
*:hover { scrollbar-color: #e3d6b8 transparent; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: transparent; border-radius: 8px; }
*:hover::-webkit-scrollbar-thumb { background: #e3d6b8; }

/* Helpers */
.pb-sr-only {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.pb-hide-scrollbar { scrollbar-width: none; }
.pb-hide-scrollbar::-webkit-scrollbar { display: none; }
.pb-truncate { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

@keyframes pb-spin { to { transform: rotate(360deg); } }
@keyframes pb-fade-up { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.pb-spin { animation: pb-spin .8s linear infinite; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}
