/* ============================================================
   BitWithBite — UI Polish Layer v1 (2026-07-03)
   Additive-only refinements. Zero-specificity :where() selectors
   so existing page styles always win. Safe on every page.
   ============================================================ */

/* ── text selection in brand colour ── */
::selection{background:rgba(255,140,26,.32);color:inherit}

/* ── refined scrollbars ── */
*{scrollbar-width:thin;scrollbar-color:rgba(140,168,216,.35) transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(140,168,216,.30);border-radius:99px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(255,140,26,.55);border:2px solid transparent;background-clip:content-box}

/* ── visible, consistent keyboard focus ── */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:2px solid #ff8c1a;outline-offset:2px;border-radius:6px;
}
:where(a,button,input,select,textarea):focus:not(:focus-visible){outline:none}

/* ── gentle interactive physics ── */
:where(button,[role="button"],input[type="submit"]){
  transition:transform .16s cubic-bezier(.4,0,.2,1),box-shadow .16s,opacity .16s,filter .16s;
  touch-action:manipulation;
}
:where(button,[role="button"],input[type="submit"]):hover:not(:disabled){transform:translateY(-1px)}
:where(button,[role="button"],input[type="submit"]):active:not(:disabled){transform:translateY(0) scale(.98)}
:where(button):disabled{cursor:not-allowed;opacity:.55}

/* ── inputs feel alive ── */
:where(input[type="text"],input[type="search"],input[type="email"],input[type="number"],textarea,select){
  transition:border-color .15s,box-shadow .15s;
}
:where(input[type="text"],input[type="search"],input[type="email"],input[type="number"],textarea):focus{
  box-shadow:0 0 0 3px rgba(255,140,26,.18);
}

/* ── comfortable mobile tap targets ── */
@media(pointer:coarse){
  :where(button,[role="button"],a.btn,.btn){min-height:42px}
}

/* ── smoother page feel ── */
:where(html){scroll-behavior:smooth;-webkit-tap-highlight-color:rgba(255,140,26,.15)}
:where(img){-webkit-user-drag:none}

/* ── loading shimmer utility (opt-in via class) ── */
.bwb-shimmer{position:relative;overflow:hidden;background:rgba(140,168,216,.12);border-radius:8px}
.bwb-shimmer::after{
  content:'';position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.09),transparent);
  animation:bwbShimmer 1.4s infinite;
}
@keyframes bwbShimmer{to{transform:translateX(100%)}}

/* ── "AI is thinking" dots utility (opt-in via class) ── */
.bwb-dots::after{content:'·';animation:bwbDots 1.2s steps(4,end) infinite;letter-spacing:2px}
@keyframes bwbDots{0%{content:'·'}33%{content:'··'}66%{content:'···'}100%{content:''}}

/* ── respect reduced-motion users ── */
@media(prefers-reduced-motion:reduce){
  :where(html){scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
