/* ==========================================================================
   Carson Web Studio — Global Styles (cleaned & deduplicated)
   ========================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@600;700;800&family=Inter:wght@400;500;600&display=swap");

:root {
  --cws-blue: #1e3a8a;
  --cws-blue-dark: #172554;
  --cws-purple: #581c87;
  --cws-purple-light: #a78bfa;
  --cws-orange: #b34700;
  --cws-orange-dark: #7a2e00;
  --cws-bg-gradient: linear-gradient(135deg, #fff 0%, #f8fafc 100%);
  --cws-bg-light: #f8fafc;
}

/* --------------------------------------------------------------------------
   Reset (Tailwind preflight, trimmed)
   -------------------------------------------------------------------------- */
*,
:after,
:before {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-ring-inset: ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgba(59, 130, 246, 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  border: 0 solid #e5e7eb;
  box-sizing: border-box;
}
:after,
:before {
  --tw-content: "";
}
:host,
html {
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  font-family: "Inter", Arial, sans-serif;
  -webkit-tap-highlight-color: transparent;
  overflow-x: hidden;
  width: 100%;
}
hr {
  border-top-width: 1px;
  color: inherit;
  height: 0;
}
abbr:where([title]) {
  text-decoration: underline dotted;
}
b,
strong {
  font-weight: bolder;
}
code,
kbd,
pre,
samp {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size: 1em;
}
small {
  font-size: 80%;
}
sup {
  top: -0.5em;
}
table {
  border-collapse: collapse;
  border-color: inherit;
  text-indent: 0;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font-family: inherit;
  font-size: 100%;
  font-weight: inherit;
  line-height: inherit;
  margin: 0;
  padding: 0;
}
button,
select {
  text-transform: none;
}
button,
input:where([type="button"]),
input:where([type="reset"]),
input:where([type="submit"]) {
  -webkit-appearance: button;
  background-color: transparent;
  background-image: none;
}
[role="button"],
button {
  cursor: pointer;
}
:disabled {
  cursor: default;
}
audio,
canvas,
embed,
iframe,
img,
object,
svg,
video {
  display: block;
  vertical-align: middle;
}
img,
video {
  height: auto;
  max-width: 100%;
}
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
blockquote,
dd,
dl,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
p,
pre {
  margin: 0;
}
fieldset {
  margin: 0;
  padding: 0;
}
legend {
  padding: 0;
}
menu,
ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
dialog {
  padding: 0;
}
textarea {
  resize: vertical;
}
input::placeholder,
textarea::placeholder {
  color: #9ca3af;
  opacity: 1;
}

/* --------------------------------------------------------------------------
   Base typography & body
   -------------------------------------------------------------------------- */
body {
  background: #fff;
  color: var(--cws-blue);
  font-family: "Inter", Arial, sans-serif;
  font-weight: 400;
  font-size: 1.08rem;
  line-height: 1.7;
  min-height: 100vh;
  margin: 0;
  overflow-x: hidden;
  width: 100%;
}

/* Default heading style: bold, modern Poppins — site-wide */
h1, h2, h3, h4, h5, h6 {
  font-family: "Poppins", Arial, Helvetica, sans-serif;
  text-transform: none;
  font-variant: normal;
  letter-spacing: -0.01em;
  font-weight: 700;
  color: var(--cws-purple);
  margin-bottom: 0.7em;
  text-shadow: none;
}

/* Used via class="nunito-header" throughout the site — same Poppins treatment,
   kept as its own class since it's already applied across every page's headings. */
.nunito-header {
  font-family: "Poppins", Arial, Helvetica, sans-serif;
  font-weight: 800;
  text-shadow: none;
  letter-spacing: -0.01em;
}

/* Global link styling */
a {
  color: var(--cws-blue);
  text-decoration: none;
  transition: color 0.15s;
}
a:hover {
  color: var(--cws-orange);
}

header, nav {
  background: #fff;
  color: var(--cws-blue);
  box-shadow: 0 4px 24px 0 rgba(30,41,59,0.06);
  min-height: 5.5rem;
}

/* --------------------------------------------------------------------------
   Buttons
   -------------------------------------------------------------------------- */
.cws-btn {
  background: var(--cws-orange);
  color: #fff;
  font-weight: 900;
  border: 2px solid #fff;
  text-shadow: 0 2px 4px rgba(0,0,0,0.18);
  border-radius: 0.7rem;
  padding: 0.85rem 2.2rem;
  font-size: 1.15rem;
  display: inline-block;
  text-align: center;
  transition: background 0.18s, box-shadow 0.18s, transform 0.18s;
}
.cws-btn:hover {
  background: var(--cws-orange-dark);
  color: #fff;
  box-shadow: 0 4px 24px 0 rgba(249,115,22,0.18);
  transform: translateY(-2px) scale(1.03);
}

/* Pulsing glow variant, e.g. primary hero CTA */
@keyframes pulse-glow-cws {
  0% { box-shadow: 0 0 0 0 #fff200, 0 0 0 0 #ff9100; }
  40% { box-shadow: 0 0 48px 32px #fff200, 0 0 96px 48px #ff9100; }
  100% { box-shadow: 0 0 0 0 #fff200, 0 0 0 0 #ff9100; }
}
.btn-pulse {
  background: var(--cws-orange);
  color: #fff;
  font-weight: 900;
  font-size: 1.15rem;
  border: 4px solid #ff9100;
  border-radius: 0.7rem;
  padding: 0.85rem 2.2rem;
  display: inline-block;
  text-align: center;
  text-shadow: 0 2px 4px rgba(0,0,0,0.18);
  position: relative;
  z-index: 1;
  box-shadow: 0 0 32px 16px #fff200, 0 0 48px 24px #ff9100;
  animation: pulse-glow-cws 1.2s infinite;
  transition: background 0.18s, transform 0.18s;
}
.btn-pulse:hover {
  background: var(--cws-orange-dark);
  transform: translateY(-2px) scale(1.03);
}

/* --------------------------------------------------------------------------
   Nav dropdown ("Projects" menu)
   -------------------------------------------------------------------------- */
/* Main content stays capped for readability, while the desktop navigation
   uses the available viewport width to keep its links comfortably right. */
header nav > .max-w-6xl {
  width: 100%;
  max-width: none;
  padding-left: clamp(1.25rem, 4vw, 5rem);
  padding-right: clamp(1.25rem, 4vw, 5rem);
}

.cws-nav-link {
  color: var(--cws-blue);
  font-weight: 700;
  padding: 0.85rem 2rem;
  border-radius: 0.7rem;
  transition: color 0.15s, background 0.15s;
  font-size: 1rem;
}
.cws-nav-link:hover {
  color: var(--cws-orange);
  background: rgba(249,115,22,0.08);
}

.nav-dropdown-trigger {
  background: none;
  border: none;
  color: var(--cws-blue);
  font-size: 0.9rem;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  display: inline-flex;
  align-items: center;
}

/* Keep every nav item (plain links and the wrapped Projects item alike)
   vertically centered on the same baseline */
.nav-links {
  align-items: center;
}
.nav-links > li {
  display: flex;
  align-items: center;
}

.nav-dropdown-menu {
  display: none;
  position: absolute;
  left: 0;
  top: 100%;
  min-width: 180px;
  background: #fff;
  border: 1.5px solid var(--cws-blue-dark);
  border-radius: 1rem;
  box-shadow: 0 6px 32px 0 rgba(30,41,59,0.08);
  padding: 0.75rem 0 0.5rem;
  margin-top: 0.5rem;
  z-index: 20;
}
.nav-dropdown-menu.nav-dropdown-open {
  display: block;
}

/* On devices with a real mouse, restore the familiar hover-to-open feel.
   Touch devices (no hover) keep the click-only behavior from nav.js. */
@media (hover: hover) and (pointer: fine) {
  .nav-dropdown:hover .nav-dropdown-menu {
    display: block;
  }
}
.nav-dropdown-menu a {
  color: var(--cws-blue);
  padding: 0.7rem 1.5rem;
  border-radius: 0.7rem;
  display: block;
  font-weight: 500;
  transition: background 0.15s, color 0.15s;
}
.nav-dropdown-menu a:hover {
  background: var(--cws-orange);
  color: #fff;
}

/* --------------------------------------------------------------------------
   Section / card components
   -------------------------------------------------------------------------- */
.cws-section {
  background: var(--cws-bg-light);
  border-radius: 1.2rem;
  box-shadow: 0 2px 24px 0 rgba(30,41,59,0.06);
  padding: 2.5rem 2rem;
  margin-bottom: 2.5rem;
}
.cws-card {
  background: #fff;
  border-radius: 1rem;
  box-shadow: 0 2px 16px 0 rgba(88,28,135,0.06);
  padding: 2rem 1.5rem;
  margin-bottom: 2rem;
}
.cws-hero {
  background: #fff;
  border-radius: 1.5rem;
  box-shadow: 0 6px 32px 0 rgba(30,41,59,0.18);
  padding: 3.5rem 2.5rem 2.5rem 2.5rem;
  margin-bottom: 2.5rem;
}
.cws-accent {
  color: var(--cws-orange);
}

/* --------------------------------------------------------------------------
   Homepage hero
   -------------------------------------------------------------------------- */
.homepage-hero {
  border-radius: 1.5rem;
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  min-height: 100vh;
  background: url('../images/homepage.png') center center/cover no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.homepage-hero .hero-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255,255,255,0.55);
  z-index: 1;
}
.homepage-hero .hero-content {
  position: relative;
  z-index: 2;
  width: 100%;
  text-align: center;
  padding: 3rem 2rem;
}
.homepage-hero h1 {
  font-size: 2.5rem;
  padding-top: 2.2rem;
  padding-bottom: 2.2rem;
}
.homepage-hero h2 {
  font-size: 3.5rem;
}
.homepage-hero p {
  font-weight: 700;
  color: #1e3a8a;
}

/* Project page hero image variant (e.g. Vinelife) */
.hero-image {
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  margin-right: calc(50% - 50vw);
  min-height: 100vh;
  background: url('../images/vinelifescreenshot.png') center center/cover no-repeat;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.hero-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(60,60,60,0.45);
  z-index: 1;
}
.hero-content {
  position: relative;
  z-index: 2;
  color: #fff;
  text-align: center;
  padding: 3rem 2rem;
}

/* Force white background for project hero sections (non full-bleed pages) */
.project-hero {
  background: #fff;
}

/* --------------------------------------------------------------------------
   Recent Work cards (homepage project previews)
   -------------------------------------------------------------------------- */
.recent-work-card {
  text-decoration: none;
  display: flex;
  flex-direction: column;
  height: 100%;
}
.recent-work-card .p-6 {
  display: flex;
  flex-direction: column;
  flex: 1;
}
.recent-work-card .p-6 .cws-btn {
  margin-top: auto;
  align-self: flex-start;
}
.recent-work-thumb {
  width: 100%;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background-color: #fff;
}
.recent-work-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
  transition: transform 0.3s ease;
}
.recent-work-card:hover .recent-work-thumb img {
  transform: scale(1.05);
}

/* --------------------------------------------------------------------------
   Layout utilities
   -------------------------------------------------------------------------- */
.pointer-events-none { pointer-events: none; }
.absolute { position: absolute; }
.relative { position: relative; }
.inset-0 { inset: 0; }
.left-0 { left: 0; }
.z-10 { z-index: 10; }
.z-20 { z-index: 20; }
.mx-auto { margin-left: auto; margin-right: auto; }

.mb-1 { margin-bottom: 0.25rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-8 { margin-bottom: 2rem; }
.mb-10 { margin-bottom: 2.5rem; }
.mt-2 { margin-top: 0.5rem; }
.mt-6 { margin-top: 1.5rem; }
.mt-10 { margin-top: 2.5rem; }

.block { display: block; }
.inline-block { display: inline-block; }
.flex { display: flex; }
.min-h-screen { min-height: 100vh; }

.h-40 { height: 10rem; }
.w-40 { width: 10rem; }
.w-56 { width: 14rem; }
.w-full { width: 100%; }

.max-w-xl { max-width: 36rem; }
.max-w-2xl { max-width: 42rem; }
.max-w-3xl { max-width: 48rem; }
.max-w-6xl { max-width: 72rem; }

.flex-1 { flex: 1 1 0%; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-4 { gap: 1rem; }

.space-x-6 > :not([hidden]) ~ :not([hidden]) {
  margin-left: 1.5rem;
}
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
  margin-top: 1rem;
}
.space-y-6 > :not([hidden]) ~ :not([hidden]) {
  margin-top: 1.5rem;
}

.rounded { border-radius: 0.25rem; }
.rounded-full { border-radius: 9999px; }
.rounded-lg { border-radius: 0.5rem; }
.rounded-xl { border-radius: 0.75rem; }

.overflow-hidden { overflow: hidden; }

.grid { display: grid; }
.grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.gap-8 { gap: 2rem; }

@media (min-width: 640px) {
  .sm\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .lg\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.border-4 { border-width: 4px; }
.border-purple-900 { border-color: #581c87; }

.bg-blue-900 { background-color: #1e3a8a; }
.bg-blue-950 { background-color: #172554; }
.bg-orange-500 { background-color: #f97316; }
.bg-purple-700 { background-color: #7e22ce; }
.bg-opacity-70 { --tw-bg-opacity: 0.7; }
.bg-opacity-80 { --tw-bg-opacity: 0.8; }
.bg-opacity-95 { --tw-bg-opacity: 0.95; }

.bg-gradient-to-b { background-image: linear-gradient(to bottom, var(--tw-gradient-stops)); }
.from-blue-900 {
  --tw-gradient-from: #1e3a8a;
  --tw-gradient-to: rgba(30, 58, 138, 0);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.to-purple-900 { --tw-gradient-to: #581c87; }

.bg-center { background-position: 50%; }
.bg-no-repeat { background-repeat: no-repeat; }
.object-cover { object-fit: cover; }

.p-8 { padding: 2rem; }
.px-4 { padding-left: 1rem; padding-right: 1rem; }
.px-8 { padding-left: 2rem; padding-right: 2rem; }
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.py-3 { padding-top: 0.75rem; padding-bottom: 0.75rem; }
.py-10 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
.py-16 { padding-top: 4rem; padding-bottom: 4rem; }

.text-left { text-align: left; }
.text-center { text-align: center; }

.font-heading { font-family: "Poppins", Arial, sans-serif; }
.font-sans { font-family: "Inter", Arial, sans-serif; }
.font-barlow { font-family: "Inter", Arial, sans-serif; }
.font-extrabold { font-weight: 800; }

.bg-white { background-color: #fff; }
.text-blue-900 { color: var(--cws-blue); }
.text-purple-800 { color: var(--cws-purple); }

.text-base { font-size: 1rem; line-height: 1.5rem; }
.text-lg { font-size: 1.125rem; line-height: 1.75rem; }
.text-xl { font-size: 1.25rem; line-height: 1.75rem; }
.text-2xl { font-size: 1.5rem; line-height: 2rem; }
.text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
.text-5xl { font-size: 3rem; line-height: 1; }
.text-6xl { font-size: 3.75rem; line-height: 1; }

.font-bold { font-weight: 700; }
.tracking-tight { letter-spacing: -0.025em; }

.text-orange-400 { color: #fb923c; }
.text-purple-100 { color: #f3e8ff; }
.text-purple-200 { color: #e9d5ff; }
.text-purple-300 { color: #d8b4fe; }
.text-white { color: #fff; }

.underline { text-decoration-line: underline; }
.opacity-0 { opacity: 0; }

.shadow-lg {
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1);
}
.shadow-2xl {
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
}
.hover\:shadow-2xl:hover {
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
}

.transition {
  transition-duration: 0.15s;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

.hover\:bg-orange-600:hover { background-color: #ea580c; }
.hover\:bg-purple-800:hover { background-color: #6b21a8; }
.hover\:text-orange-400:hover { color: #fb923c; }
.hover\:text-white:hover { color: #fff; }

@media (min-width: 640px) {
  .sm\:flex-row { flex-direction: row; }
}

/* --------------------------------------------------------------------------
   Mobile hamburger menu (JS-controlled via nav.js, toggling .nav-open /
   .nav-burger-open classes — no checkbox hack, works identically with
   click or tap)
   -------------------------------------------------------------------------- */
.nav-burger {
  display: none;
  flex-direction: column;
  justify-content: space-between;
  width: 28px;
  height: 20px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  z-index: 30;
}
.nav-burger span {
  display: block;
  height: 3px;
  width: 100%;
  background: var(--cws-purple);
  border-radius: 2px;
  transition: transform 0.25s ease, opacity 0.25s ease;
}
.nav-burger.nav-burger-open span:nth-child(1) {
  transform: translateY(8.5px) rotate(45deg);
}
.nav-burger.nav-burger-open span:nth-child(2) {
  opacity: 0;
}
.nav-burger.nav-burger-open span:nth-child(3) {
  transform: translateY(-8.5px) rotate(-45deg);
}

@media (max-width: 1120px) {
  .nav-burger {
    display: flex;
  }
  .nav-links {
    display: none;
    flex-direction: column;
    align-items: stretch;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: #fff;
    box-shadow: 0 12px 24px rgba(30,41,59,0.12);
    padding: 1rem 1.5rem 1.5rem;
    gap: 0.25rem;
    z-index: 50;
  }
  .nav-links.nav-open {
    display: flex;
  }
  .nav-links .space-x-6 > :not([hidden]) ~ :not([hidden]),
  .nav-links.space-x-6 > :not([hidden]) ~ :not([hidden]) {
    margin-left: 0;
  }
  /* On mobile, the Projects dropdown becomes a normal stacked block once opened */
  .nav-links .nav-dropdown-menu {
    position: static;
    box-shadow: none;
    border: none;
    padding-left: 1rem;
    margin-top: 0.25rem;
  }
  header nav .max-w-6xl {
    position: relative;
    flex-wrap: wrap;
  }
}

/* --------------------------------------------------------------------------
   Responsive system
   Covers everything from folded fold-phones (~240px) through laptop-width
   tablets (~1366px) using fluid sizing (clamp) plus a small set of range
   breakpoints, rather than one rule per exact device. Fluid values mean
   widths *between* listed devices are covered too, not just exact matches.
   -------------------------------------------------------------------------- */

/* Global safety net: nothing is ever allowed to force horizontal scroll */
img, video, iframe, svg {
  max-width: 100%;
  height: auto;
}

/* --- Fluid heading sizes: scale smoothly with viewport width instead of
   jumping at fixed breakpoints. clamp(min, preferred, max) means these
   never go below the min or above the max, whatever the screen width. --- */
header nav h1.text-7xl {
  font-size: clamp(1.5rem, 5vw, 4.5rem);
}
.homepage-hero h1 {
  font-size: clamp(1.1rem, 4vw, 2.5rem);
}
.homepage-hero h2 {
  font-size: clamp(1.25rem, 6vw, 3.5rem);
  line-height: 1.15;
}
.homepage-hero p,
.hero-content p {
  font-size: clamp(0.95rem, 2.5vw, 1.5rem);
}
.project-hero h1 {
  font-size: clamp(1.25rem, 4vw, 2.25rem);
}

/* --- Hero section height: full-screen on desktop, shorter on small
   screens so content isn't forced into a tall, mostly-empty box --- */
@media (max-width: 768px) {
  .homepage-hero,
  .hero-image {
    min-height: 70vh;
  }
}

/* --- Narrow phones and folded fold-phones (down to ~240px) --- */
@media (max-width: 360px) {
  .homepage-hero,
  .hero-image {
    min-height: 60vh;
  }
  .hero-content,
  .homepage-hero .hero-content {
    padding: 1.5rem 1rem;
  }
  h1, h2, h3 {
    word-break: break-word;
  }
}

/* --- Phones and small tablets (portrait): reduce large desktop padding --- */
@media (max-width: 768px) {
  .py-16 { padding-top: 2.5rem; padding-bottom: 2.5rem; }
  .py-10 { padding-top: 1.5rem; padding-bottom: 1.5rem; }

  .recent-work-card,
  main .max-w-md {
    max-width: 100%;
  }

  .flex.flex-col.sm\:flex-row {
    width: 100%;
  }
}

/* --- Tablets and small laptops: tighten side padding on wide containers,
   but content still has more room than on phones --- */
@media (max-width: 1024px) {
  .max-w-6xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

/* --- Large tablets / laptop-width devices (iPad Pro, Surface Pro): mostly
   desktop layout already fits, just cap hero text from getting oversized --- */
@media (min-width: 1025px) and (max-width: 1366px) {
  .homepage-hero h2 {
    font-size: clamp(2.5rem, 5vw, 3.5rem);
  }
}

/* ==========================================================================
   Client reviews — display cards and star rating (read-only + input picker)
   ========================================================================== */

#reviews-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
  margin-top: 2rem;
}

.review-card {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 1rem;
  box-shadow: 0 2px 16px 0 rgba(88,28,135,0.06);
  padding: 1.5rem;
}

.review-stars {
  color: #f5a623;
  font-size: 1.25rem;
  letter-spacing: 0.15rem;
  display: block;
  margin-bottom: 0.75rem;
}

.review-comment {
  font-style: italic;
  color: var(--cws-blue);
  margin-bottom: 0.75rem;
  line-height: 1.6;
}

.review-meta {
  font-size: 0.9rem;
  color: var(--cws-purple);
}

/* --- Interactive star picker for the "Leave a Review" form ---
   Filling is handled by JS adding a .selected class (see the inline
   script in leave-review.html) — no CSS sibling-selector trickery. */
.star-picker {
  display: flex;
  gap: 0.25rem;
}
.star-picker-star {
  font-size: 2rem;
  line-height: 1;
  color: #d1d5db;
  cursor: pointer;
  transition: color 0.15s;
  user-select: none;
}
.star-picker-star.selected {
  color: #f5a623;
}
