/* ============================================================
   CASE STUDY — shared styles (Coral Design System)
   Used by: town-square.html, coral-design-system.html,
            infinity-cooling.html, brush.html
   Accent is coral by default. Add class="accent-crimson" or
   "accent-cyan" to <html> to retheme the primary accent.
   ============================================================ */

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

:root {
  --font: 'Inter', sans-serif;
  --base: 10px;

  /* Gray */
  --gray01:#FAFAFA; --gray02:#EEEEEE; --gray03:#DBDBDB; --gray04:#C9C9C9;
  --gray05:#A7A7A7; --gray06:#898989; --gray07:#6E6E6E; --gray08:#5B5B5B;
  --gray09:#424242; --gray10:#252525; --gray11:#111111; --gray12:#050505;
  /* Coral */
  --coral01:#FFF8F6; --coral02:#FFE8E3; --coral03:#FFCCBF; --coral04:#FFB5A3;
  --coral05:#FF886B; --coral06:#FF5D35; --coral07:#EF3E11; --coral08:#CC310B;
  --coral09:#8E250B; --coral10:#4B170A; --coral11:#200B05; --coral12:#090302;
  /* Crimson */
  --crimson01:#FFF8F9; --crimson02:#FFE5EA; --crimson03:#FFCAD3; --crimson04:#FFAFBD;
  --crimson05:#FF7E94; --crimson06:#FD536F; --crimson07:#ED3352; --crimson08:#CF2541;
  --crimson09:#9D192F; --crimson10:#51101A; --crimson11:#22090D; --crimson12:#0A0304;
  /* Cyan */
  --cyan01:#EAFEFF; --cyan02:#CDFCFF; --cyan03:#9FF1F6; --cyan04:#6DF0F9;
  --cyan05:#23DEEB; --cyan06:#10BCC8; --cyan07:#0798A2; --cyan08:#0A7880;
  --cyan09:#0A5A60; --cyan10:#073235; --cyan11:#051617; --cyan12:#020707;
}

/* ── LIGHT THEME ── */
[data-theme="light"] {
  --bg:var(--gray01); --surface:#FFFFFF; --surface-raised:#FFFFFF;
  --text:var(--gray12); --text-secondary:var(--gray12); --text-tertiary:var(--gray08); --text-muted:var(--gray08); --tab-hover-line:var(--gray04);
  --border:var(--gray03); --border-light:var(--gray02);
  --nav-bg:rgba(255,255,255,0.92); --hover-bg:var(--gray02); --btn-secondary-fill:#FFFFFF; --btn-primary-text:#fff;

  --c-hi:var(--coral08); --c-hi-hover:var(--coral07);
  --c-bg:var(--coral01); --c-bg2:var(--coral02); --c-mid:var(--coral04); --c-border:var(--coral04);
  --on-tint:var(--coral11); --on-tint-head:var(--coral12);

  --cr-hi:var(--crimson08); --cr-bg:var(--crimson01); --cr-bg2:var(--crimson02); --cr-border:var(--crimson04);
  --cy-hi:var(--cyan08); --cy-bg:var(--cyan01); --cy-bg2:var(--cyan02); --cy-border:var(--cyan04);

  --tag-coral-bg:var(--coral01); --tag-coral-border:var(--coral04); --tag-coral-text:var(--coral08);
  --tag-crimson-bg:var(--crimson01); --tag-crimson-border:var(--crimson04); --tag-crimson-text:var(--crimson08);
  --tag-cyan-bg:var(--cyan01); --tag-cyan-border:var(--cyan04); --tag-cyan-text:var(--cyan08);
  --tag-gray-bg:var(--gray02); --tag-gray-border:var(--gray03); --tag-gray-text:var(--gray08);

  --toggle-track:var(--gray03); --toggle-thumb:#FFFFFF; --toggle-border:var(--gray04); --icon-color:var(--gray07);
}

/* ── DARK THEME ── */
[data-theme="dark"] {
  --bg:var(--gray12); --surface:var(--gray11); --surface-raised:var(--gray10);
  --text:var(--gray01); --text-secondary:var(--gray02); --text-tertiary:var(--gray06); --text-muted:var(--gray06); --tab-hover-line:var(--gray08);
  --border:var(--gray10); --border-light:var(--gray10);
  --nav-bg:rgba(17,17,17,0.92); --hover-bg:var(--gray10); --btn-secondary-fill:var(--gray11); --btn-primary-text:var(--coral12);

  --c-hi:var(--coral06); --c-hi-hover:var(--coral05);
  --c-bg:var(--coral11); --c-bg2:var(--coral10); --c-mid:var(--coral10); --c-border:var(--coral10);
  --on-tint:var(--coral02); --on-tint-head:var(--coral01);

  --cr-hi:var(--crimson06); --cr-bg:var(--crimson11); --cr-bg2:var(--crimson10); --cr-border:var(--crimson10);
  --cy-hi:var(--cyan06); --cy-bg:var(--cyan11); --cy-bg2:var(--cyan10); --cy-border:var(--cyan10);

  --tag-coral-bg:var(--coral11); --tag-coral-border:var(--coral10); --tag-coral-text:var(--coral04);
  --tag-crimson-bg:var(--crimson11); --tag-crimson-border:var(--crimson10); --tag-crimson-text:var(--crimson04);
  --tag-cyan-bg:var(--cyan11); --tag-cyan-border:var(--cyan10); --tag-cyan-text:var(--cyan04);
  --tag-gray-bg:var(--gray10); --tag-gray-border:var(--gray09); --tag-gray-text:var(--gray05);

  --toggle-track:var(--gray11); --toggle-thumb:var(--gray02); --toggle-border:var(--gray08); --icon-color:var(--gray06);
}

/* ── ACCENT REMAPS ── */
html.accent-crimson[data-theme="light"] { --c-hi:var(--crimson08); --c-hi-hover:var(--crimson06); --c-bg:var(--crimson01); --c-bg2:var(--crimson02); --c-mid:var(--crimson04); --c-border:var(--crimson04); --on-tint:var(--crimson11); --on-tint-head:var(--crimson12); }
html.accent-crimson[data-theme="dark"]  { --c-hi:var(--crimson06); --c-hi-hover:var(--crimson04); --c-bg:var(--crimson11); --c-bg2:var(--crimson10); --c-mid:var(--crimson10); --c-border:var(--crimson10); --on-tint:var(--crimson02); --on-tint-head:var(--crimson01); }
html.accent-cyan[data-theme="light"] { --c-hi:var(--cyan08); --c-hi-hover:var(--cyan06); --c-bg:var(--cyan01); --c-bg2:var(--cyan02); --c-mid:var(--cyan04); --c-border:var(--cyan04); --on-tint:var(--cyan11); --on-tint-head:var(--cyan12); }
html.accent-cyan[data-theme="dark"]  { --c-hi:var(--cyan06); --c-hi-hover:var(--cyan04); --c-bg:var(--cyan11); --c-bg2:var(--cyan10); --c-mid:var(--cyan10); --c-border:var(--cyan10); --on-tint:var(--cyan02); --on-tint-head:var(--cyan01); }

html { font-size: var(--base); scroll-behavior: smooth; }
body { font-family: var(--font); background: var(--bg); color: var(--text); line-height: 1.6; font-size: 1.4rem; -webkit-font-smoothing: antialiased; transition: background .25s, color .25s, border-color .25s; }/* ── MAIN NAV ── */
nav{
  position: fixed; top: 0; left: 0; right: 0; z-index: 300;
  background: var(--nav-bg); backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border); height: 56px;
  display: flex; align-items: center; padding: 0 32px; transition: background .25s, border-color .25s;}
.nav-inner { width: 100%; max-width: 1280px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; }
.nav-logo { font-size: 1.4rem; font-weight: 700; color: var(--text); text-decoration: none; letter-spacing: -0.02em; }
.nav-logo span:not(.logo-full):not(.logo-short) { color: var(--c-hi); }
.nav-logo .logo-short { display: none; }
.nav-right { display: flex; align-items: center; gap: 8px; position: relative; }
.nav-links { display: flex; align-items: center; gap: 8px; list-style: none; }
.nav-links a { display: inline-flex; align-items: center; text-decoration: none; color: var(--text-muted); font-size: 1.4rem; font-weight: 600; padding: 6px 12px; border-radius: 4px; transition: color .18s, background .18s; }
.nav-links a:not(.active):not([aria-current="page"]):hover { color: var(--text); background: var(--hover-bg); }.nav-links a.active{ color: var(--c-hi); background: var(--c-bg); transition: background .25s, border-color .25s;}
.theme-toggle-label { display: none; }
.nav-hamburger { display: none; appearance: none; -webkit-appearance: none; background: none; border: none; cursor: pointer; width: 38px; height: 34px; padding: 8px 7px; flex-direction: column; justify-content: center; gap: 5px; border-radius: 6px; transition: background .18s; }
.nav-hamburger span { display: block; height: 2px; width: 100%; background: var(--text-muted); border-radius: 99px; transition: background .18s; }
@media (hover: hover) { .nav-hamburger:hover { background: var(--hover-bg); } .nav-hamburger:hover span { background: var(--text); } }
  .nav-hamburger.open { background: var(--hover-bg); }
  .nav-hamburger.open span { background: var(--text); }



.nav-dropdown { position: relative; }
.dropdown-trigger { text-decoration: none; display: flex; align-items: center; gap: 5px; cursor: pointer; font-size: 1.4rem; font-weight: 600; color: var(--text-muted); padding: 6px 12px; border-radius: 4px; transition: color .18s, background .18s; text-decoration: none; }
@media (hover: hover) { .dropdown-trigger:not(.active):hover { color: var(--text); background: var(--hover-bg); } }.dropdown-trigger.active{ color: var(--c-hi); background: var(--c-bg); transition: background .25s, border-color .25s;}
@media (hover: hover) { .nav-dropdown:hover .dropdown-trigger:not(.active) { color: var(--text); background: var(--hover-bg); } }
.dropdown-trigger svg { width: 14px; height: 14px; transition: transform .2s; }
@media (hover: hover) { .nav-dropdown:hover .dropdown-trigger svg { transform: rotate(180deg); } }.dropdown-menu{ display: none; position: absolute; top: calc(100% + 6px); left: 0; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 6px; min-width: 220px; box-shadow: 0 12px 32px rgba(0,0,0,.12); z-index: 400; transition: background .25s, border-color .25s;}
[data-theme="dark"] .dropdown-menu { box-shadow: 0 16px 40px rgba(0,0,0,.5); }
.dropdown-menu::before { content: ''; position: absolute; top: -6px; left: 0; right: 0; height: 6px; }
@media (hover: hover) { .nav-dropdown:hover .dropdown-menu { display: block; } }
.nav-dropdown.open .dropdown-menu { display: block; }
.nav-dropdown.open .dropdown-trigger svg { transform: rotate(180deg); }
  .nav-dropdown.open .dropdown-trigger:not(.active) { color: var(--text); background: var(--hover-bg); }
.dropdown-menu a { display: block; padding: 11px 12px; border-radius: 6px; text-decoration: none; font-size: 1.4rem; font-weight: 400; color: var(--text-muted); transition: background .14s, color .14s; }
.dropdown-menu a:not([aria-current="page"]):hover { color: var(--text); background: var(--hover-bg); }.dropdown-menu a[aria-current="page"]{ background: var(--c-bg); color: var(--c-hi); transition: background .25s, border-color .25s;}/* ── THEME TOGGLE ── */
.theme-toggle-wrap{ display: flex; align-items: center; gap: 8px; margin-left: 8px; padding-left: 16px; border-left: 1px solid var(--border); transition: background .25s, border-color .25s;}
.theme-toggle { position: relative; width: 40px; height: 22px; border-radius: 11px; border: 1.5px solid var(--toggle-border); background: var(--toggle-track); cursor: pointer; transition: background .25s, border-color .25s; flex-shrink: 0; }.theme-toggle-thumb{ position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--toggle-thumb); box-shadow: 0 1px 3px rgba(0,0,0,.2); transition: background .25s, transform .25s cubic-bezier(.4,0,.2,1), border-color .25s; }
[data-theme="dark"] .theme-toggle-thumb { transform: translateX(18px); }
.theme-icon { width: 18px; height: 18px; flex-shrink: 0; color: var(--icon-color); transition: color .25s; }/* ── SECTION NAV (breadcrumb scroll-spy) ── */
#section-nav{
  position: fixed; top: 56px; left: 0; right: 0; z-index: 200;
  background: var(--nav-bg); backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border); height: 44px; display: flex; align-items: center; transition: background .25s, border-color .25s;}
.section-nav-inner { width: 100%; max-width: 1344px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; }
.snav-links { display: flex; align-items: center; gap: 4px; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; flex: 1 1 auto; min-width: 0; padding-left: 20px; margin-left: -20px; -webkit-mask-image: linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent); mask-image: linear-gradient(90deg, transparent, #000 20px, #000 calc(100% - 20px), transparent); }
.snav-links::-webkit-scrollbar { display: none; }
  .snav-links.snav-at-last::after { content: ''; flex: 0 0 24px; }
.snav-link { font-size: 1.2rem; font-weight: 600; color: var(--text-muted); text-decoration: none; padding: 4px 12px; border-radius: 4px; transition: color .18s, background .18s; white-space: nowrap; }
.snav-link:not(.active):hover { color: var(--text); background: var(--hover-bg); }.snav-link.active{ color: var(--c-hi); background: var(--c-bg); transition: background .25s, border-color .25s;}
.snav-proj-nav { display: flex; align-items: center; gap: 4px; margin-left: auto; padding-left: 16px; flex-shrink: 0; }
.snav-proj { display: flex; align-items: center; gap: 6px; font-size: 1.2rem; font-weight: 600; color: var(--text-tertiary); text-decoration: none; padding: 4px 10px; border-radius: 4px; white-space: nowrap; transition: color .18s, background .18s; }
@media (hover: hover) { .snav-proj:hover { color: var(--c-hi); background: var(--c-bg); } }
.snav-proj.tapped { color: var(--c-hi); background: var(--c-bg); }
.snav-chevron { width: 13px; height: 13px; flex-shrink: 0; }

/* ── LAYOUT ── */
.section-wrap { max-width: 1344px; margin: 0 auto; padding: 0 32px; }/* ── PAGE HERO ── */
.cs-hero{
  background: linear-gradient(165deg, var(--c-bg) 0%, var(--c-bg2) 48%, var(--bg) 100%);
  border-bottom: 1px solid var(--border);
  padding: 172px 32px 64px; transition: background .25s, border-color .25s;}
.cs-hero-inner { max-width: 1280px; margin: 0 auto; }
/* Opt-in full-bleed hero image: <section class="cs-hero has-img" style="--hero-img: url('images/…'); --hero-pos: 50% 0%"> */
.cs-hero.has-img {
  position: relative;
  overflow: hidden;
  background:
    var(--hero-img, none) var(--hero-pos, center center) / cover no-repeat,
    linear-gradient(135deg, var(--coral11) 0%, var(--coral10) 55%, var(--gray12) 100%);
}
/* Scrim + dark-theme text tokens (image heroes always render as dark mode) */
html { --c-hi-dark: var(--coral06); }
html.accent-crimson { --c-hi-dark: var(--crimson06); }
html.accent-cyan { --c-hi-dark: var(--cyan06); }
.cs-hero.has-img::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(100deg, rgba(0,0,0,.80) 0%, rgba(0,0,0,.30) 100%);
}
.cs-hero.has-img .cs-hero-inner { position: relative; z-index: 1; }
.cs-hero.has-img .page-eyebrow { color: var(--c-hi-dark); }
.cs-hero.has-img .page-h1 { color: var(--gray01); }
.cs-hero.has-img .page-sub { color: var(--gray02); }
.cs-hero.has-img .hero-meta-row { border-top-color: var(--gray04); }
.cs-hero.has-img .hero-meta-label { color: var(--gray04); }
.cs-hero.has-img .hero-meta-value { color: var(--gray02); }.cs-hero.has-img .deck-btn{ background: var(--gray11); border-color: var(--gray10); color: var(--gray01); transition: background .25s, border-color .25s;}
.cs-hero.has-img .deck-btn:hover { border-color: var(--c-hi-dark); color: var(--c-hi-dark); background: var(--coral11); }
html.accent-crimson .cs-hero.has-img .deck-btn:hover { background: var(--crimson11); }
html.accent-cyan .cs-hero.has-img .deck-btn:hover { background: var(--cyan11); }
.page-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 1.2rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--c-hi); margin-bottom: 16px; }
.page-h1 { font-size: 3.2rem; font-weight: 700; letter-spacing: -0.03em; line-height: 1.1; color: var(--text); margin-bottom: 24px; max-width: 760px; }
.page-sub { font-size: 1.8rem; font-weight: 400; color: var(--text-secondary); line-height: 1.65; max-width: 640px; margin-bottom: 40px; }.hero-meta-row{ display: flex; gap: 48px; flex-wrap: wrap; padding-top: 32px; border-top: 1px solid var(--border); transition: background .25s, border-color .25s;}
.hero-meta-item { display: flex; flex-direction: column; gap: 4px; }
.hero-meta-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--text-tertiary); }
.hero-meta-value { font-size: 1.4rem; font-weight: 400; color: var(--text-secondary); }/* ── SECTIONS ── */
.cs-section{ padding: 80px 0; border-bottom: 1px solid var(--border); scroll-margin-top: 104px; transition: background .25s, border-color .25s;}
.section-label[id] { scroll-margin-top: 104px; }.cs-section.alt{ background: var(--surface); transition: background .25s, border-color .25s;}.cs-section.base{ background: var(--bg); transition: background .25s, border-color .25s;}
.sub-eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 1.2rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--c-hi); margin-bottom: 16px; }
.sub-h2 { font-size: 2.4rem; font-weight: 700; letter-spacing: -0.025em; line-height: 1.2; color: var(--text); margin-bottom: 16px; max-width: 760px; }
.sub-h3 { font-size: 2rem; font-weight: 700; letter-spacing: -0.025em; line-height: 1.2; color: var(--text); margin: 40px 0 12px; max-width: 760px; }
.sub-eyebrow + .sub-h3, .sub-h3:first-child { margin-top: 0; }
.sub-intro { font-size: 1.6rem; font-weight: 400; color: var(--text-secondary); line-height: 1.8; max-width: 740px; margin-bottom: 8px; }
.section-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 12px; margin-top: 40px; }
.prose { font-size: 1.6rem; font-weight: 400; color: var(--text-secondary); line-height: 1.8; max-width: 740px; }
.prose + .prose { margin-top: 16px; }

/* Goals */
.goals-list { list-style: none; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin-top: 24px; }
.goals-list li { width: fit-content; max-width: 100%; }.goals-list li{ display: flex; align-items: flex-start; gap: 16px; padding: 16px 20px; background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 8px; font-size: 1.6rem; font-weight: 400; color: var(--on-tint); line-height: 1.6; transition: background .25s, border-color .25s;}
.goals-list li span { font-size: 1.2rem; font-weight: 700; color: var(--c-hi); flex-shrink: 0; margin-top: 2px; }

/* Image placeholders */
.img-grid { display: grid; gap: 16px; margin: 32px 0 0; }
.img-grid.cols-1 { grid-template-columns: 1fr; }
.img-grid.cols-2 { grid-template-columns: 1fr 1fr; }
.img-grid.cols-3 { grid-template-columns: 1fr 1fr 1fr; }
.img-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 860px) { .img-grid.cols-4 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .img-grid.cols-4 { grid-template-columns: 1fr; } }
/* Mobile: swipe a row of tall mockups instead of stacking them (keeps each readable) */
@media (max-width: 860px) {
  .img-grid.mobile-hscroll { display: flex; grid-template-columns: none; overflow-x: auto; gap: 12px; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin-left: -20px; margin-right: -20px; padding: 0 20px 10px; }
  .img-grid.mobile-hscroll::-webkit-scrollbar { display: none; }
  .img-grid.mobile-hscroll > * { flex: 0 0 72%; min-width: 0; scroll-snap-align: start; }
  /* Pairs that stay side-by-side on phones rather than doubling page length */
  .img-grid.cols-2.keep-2col { grid-template-columns: 1fr 1fr; gap: 10px; }
}.img-placeholder{ width: 100%; border-radius: 8px; border: 1px solid var(--c-border); background: linear-gradient(135deg, var(--c-bg), var(--c-bg2)); display: flex; align-items: center; justify-content: center; gap: 8px; padding: 0; transition: background .25s, border-color .25s;}
.img-placeholder.tall { aspect-ratio: 16/10; }
.img-placeholder.wide { aspect-ratio: 21/9; }
.img-placeholder.short { aspect-ratio: 2/1; }
.img-placeholder.hero { aspect-ratio: 21/9; margin-top: 0; }
.img-placeholder-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text-tertiary); text-align: center; padding: 16px; }

/* Wireframe row: paper sheet left half, two lo-fi phones right quarters */
.wireframe-row { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 16px; align-items: start; margin-top: 24px; }.wf-paper{ display: block; width: 100%; height: auto; border-radius: 8px; border: 1px solid var(--border); transition: background .25s, border-color .25s;}.lofi-shot{ display: block; width: 100%; height: auto; border-radius: 8px; border: 1px solid var(--border); transition: background .25s, border-color .25s;}

/* Figma clickable prototype embed */
.figma-embed { width: 100%; margin: 24px 0 0; aspect-ratio: 1133 / 750; }.figma-embed iframe{ width: 100%; height: 100%; border: 1px solid var(--border); border-radius: 8px; display: block; background: var(--c-bg2); transition: background .25s, border-color .25s;}

/* Intrinsic width/height attrs (added to reserve space and stop lazy-load scroll jump / CLS) also apply a presentational HEIGHT that would otherwise beat responsive width rules and vertically stretch the image. Force aspect-ratio sizing on any dimensioned <img>; :where() keeps specificity 0 so real class/inline heights (.btn-bare img, .phone-tile img) still override. */
img:where([width][height]) { height: auto; }/* Real images (replace .img-placeholder divs with <img class="img-real"> as assets land) */
.img-grid .img-real{ width: 100%; height: auto; display: block; border-radius: 8px; border: 1px solid var(--border); transition: background .25s, border-color .25s;}/* Phone tile: uniform phone frame showing the top viewport of a long mobile capture */
.phone-tile{ aspect-ratio: 9 / 19.5; overflow: hidden; border-radius: 8px; border: 1px solid var(--border); background: var(--bg); transition: background .25s, border-color .25s;}
.phone-tile img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }/* Media card: white mat + neutral gray border in both themes — frames for artwork
   with baked white backgrounds; the frame stays quiet, no accent. */
.media-card{ background: #FFFFFF; border: 1px solid var(--border); border-radius: 8px; padding: 32px 24px; display: flex; justify-content: center; transition: background .25s, border-color .25s;}
.media-card img { display: block; width: 100%; max-width: 100%; height: auto; }

/* Usability-fix mocks: bare images, no mat — 360×640 top crops of hi-fi screens */
.fix-demo { display: block; width: 100%; max-width: 240px; height: auto; border-radius: 8px; margin: 0 auto 18px; }

/* Side-by-side text + media (for tall/portrait assets) */
.split-media { display: grid; grid-template-columns: 1fr 400px; gap: 56px; align-items: center; }
.split-media .media-card img { max-width: 300px; }

/* Split */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; margin-top: 24px; }
.split.flip { direction: rtl; }
.split.flip > * { direction: ltr; }

/* Feature cards */
.feature-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 24px; }
.feature-grid.cols-3 { grid-template-columns: 1fr 1fr 1fr; }.feature-card{ background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 24px; transition: background .25s, border-color .25s;}.cs-section.alt .feature-card{ background: var(--bg); transition: background .25s, border-color .25s;}
.feature-title { font-size: 1.6rem; font-weight: 700; color: var(--text); margin-bottom: 8px; letter-spacing: -0.01em; }
.feature-title .num, .sub-h3 .num { color: var(--c-hi); font-size: 1.2rem; font-weight: 600; margin-right: 8px; letter-spacing: .04em; }
.feature-desc { font-size: 1.6rem; font-weight: 400; color: var(--text-secondary); line-height: 1.7; }/* Takeaway */
.takeaway-box{ background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 8px; padding: 32px; margin-top: 24px; transition: background .25s, border-color .25s;}
.takeaway-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--c-hi); margin-bottom: 16px; }
.takeaway-text { font-size: 1.6rem; font-weight: 400; color: var(--on-tint); line-height: 1.8; max-width: 760px; }
.takeaway-text + .takeaway-text { margin-top: 14px; }

/* Tags */
.tag-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 32px; }.tag-coral{ padding: 4px 12px; background: var(--tag-coral-bg); border: 1px solid var(--tag-coral-border); border-radius: 4px; font-size: 1.2rem; font-weight: 600; color: var(--tag-coral-text); transition: background .25s, border-color .25s;}.tag-crimson{ padding: 4px 12px; background: var(--tag-crimson-bg); border: 1px solid var(--tag-crimson-border); border-radius: 4px; font-size: 1.2rem; font-weight: 600; color: var(--tag-crimson-text); transition: background .25s, border-color .25s;}.tag-cyan{ padding: 4px 12px; background: var(--tag-cyan-bg); border: 1px solid var(--tag-cyan-border); border-radius: 4px; font-size: 1.2rem; font-weight: 600; color: var(--tag-cyan-text); transition: background .25s, border-color .25s;}.tag-gray{ padding: 4px 12px; background: var(--tag-gray-bg); border: 1px solid var(--tag-gray-border); border-radius: 4px; font-size: 1.2rem; font-weight: 600; color: var(--tag-gray-text); transition: background .25s, border-color .25s;}
.hero-meta-row .tag-gray { margin-left: auto; align-self: center; }.cs-hero.has-img .tag-gray{ background: var(--gray10); border-color: var(--gray09); color: var(--gray06); transition: background .25s, border-color .25s;}

/* Color swatches (Coral DS page) */
.swatch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; margin-top: 24px; }.swatch{ border: 1px solid var(--border); border-radius: 8px; overflow: hidden; background: var(--surface); transition: background .25s, border-color .25s;}.cs-section.alt .swatch{ background: var(--bg); transition: background .25s, border-color .25s;}/* Raised content cards: lift to gray10 in dark mode so they sit above both base (gray12) and alt (gray11) sections. Image/media cards (.media-card, project/spotlight thumbs) intentionally excluded. Image-led feature cards (:has(.fix-demo) — the usability pain-point mocks) also stay at their base so the darker well lets the bright mockups pop forward. */
[data-theme="dark"] .feature-card:not(:has(.fix-demo)), [data-theme="dark"] .cs-section.alt .feature-card:not(:has(.fix-demo)), [data-theme="dark"] .swatch, [data-theme="dark"] .cs-section.alt .swatch{ background: var(--surface-raised); transition: background .25s, border-color .25s;}
.swatch-chip { height: 72px; width: 100%; }
.swatch-meta { padding: 10px 12px; }
.swatch-name { font-size: 1.2rem; font-weight: 600; color: var(--text); }
.swatch-hex { font-size: 1rem; font-weight: 400; color: var(--text-tertiary); font-variant-numeric: tabular-nums; text-transform: uppercase; }

/* Type specimen (Coral DS page) */
.type-list { display: flex; flex-direction: column; margin-top: 24px; }.type-row{ display: grid; grid-template-columns: 160px 1fr; gap: 24px; align-items: baseline; padding: 18px 0; border-top: 1px solid var(--border-light); transition: background .25s, border-color .25s;}
.type-row:first-child { border-top: none; }
.type-meta { font-size: 1.2rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text-tertiary); }
.type-sample { color: var(--text); letter-spacing: -0.02em; }

/* Style guide — buttons & icons rows (cropped from Mike's sticker sheet; white mat since source bg is white) */
.sg-group-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--text-tertiary); margin: 28px 0 10px; }.sg-row-img{ display: block; width: 86%; max-width: 924px; height: auto; background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: 16px 20px; transition: background .25s, border-color .25s;}

/* Definition table (semantic mapping) */
.def-table { width: 100%; border-collapse: collapse; margin-top: 24px; }.def-table th, .def-table td{ text-align: left; padding: 14px 16px; border-bottom: 1px solid var(--border); font-size: 1.4rem; transition: background .25s, border-color .25s;}
.def-table th { font-size: 1.2rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--text-tertiary); }
.def-table td { color: var(--text-secondary); font-weight: 400; }
.def-table-wrap { overflow-x: auto; margin: 32px 0; -webkit-overflow-scrolling: touch; }
.def-table-wrap .def-table { margin: 0; min-width: 480px; }
.def-dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 8px; vertical-align: middle; }/* ── NEXT PROJECT ── */
.next-project{ padding: 56px 0; background: var(--bg); border-bottom: 1px solid var(--border); transition: background .25s, border-color .25s;}
.next-inner { max-width: 1344px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.next-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--text-tertiary); margin-bottom: 8px; }
.next-title { font-size: 2rem; font-weight: 700; letter-spacing: -0.02em; color: var(--text); }
.next-link { display: inline-flex; align-items: center; gap: 8px; font-size: 1.4rem; font-weight: 600; color: var(--c-hi); text-decoration: none; white-space: nowrap; }/* ── CONTACT STRIP ── */
.contact-strip{ padding: 80px 0; background: var(--surface); transition: background .25s, border-color .25s;}
.contact-strip-inner { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 24px; }
.contact-strip-text h2 { font-size: 2rem; font-weight: 700; letter-spacing: -0.02em; margin-bottom: 8px; }
.contact-strip-text p { font-size: 1.6rem; font-weight: 400; color: var(--text-secondary); }
.contact-strip-links { display: flex; gap: 12px; flex-wrap: wrap; }
.contact-link { display: inline-flex; align-items: center; gap: 8px; background: var(--btn-secondary-fill); padding: 10px 20px; border: 1px solid var(--border); border-radius: 8px; font-size: 1.4rem; font-weight: 600; color: var(--text); text-decoration: none; transition: border-color .2s, color .2s, background .2s; display: flex; align-items: center; gap: 8px; }
@media (hover: hover) { .contact-link:hover { border-color: var(--c-hi); color: var(--c-hi); background: var(--c-bg); } }
.contact-link.tapped { border-color: var(--c-hi); color: var(--c-hi); background: var(--c-bg); }.contact-link.primary{ background: var(--c-hi); border-color: var(--c-hi); color: var(--btn-primary-text); transition: background .25s, border-color .25s;}
@media (hover: hover) { .contact-link.primary:hover { background: var(--c-hi-hover); border-color: var(--c-hi-hover); } }
.contact-link.primary.tapped { background: var(--c-hi-hover); border-color: var(--c-hi-hover); }
.contact-icon { width: 16px; height: 16px; flex: none; }
.contact-break { display: none; }
@media (max-width: 560px) { .contact-strip-links { width: 100%; } .contact-break { display: block; flex-basis: 100%; height: 0; } }

/* Process deck button */
.deck-btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; border: 1px solid var(--c-border); border-radius: 8px; background: var(--surface); color: var(--c-hi); font-size: 1.4rem; font-weight: 600; text-decoration: none; transition: border-color .2s, background .2s, gap .2s; margin-bottom: 40px; }
.deck-btn:hover { border-color: var(--c-hi); background: var(--c-bg); }
.deck-btn svg { width: 16px; height: 16px; }

/* Personas: coral tint — same "human voice" treatment as the takeaway box */
.persona-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 24px; }.persona-card{ background: var(--c-bg); border: 1px solid var(--c-border); border-radius: 8px; padding: 28px; display: flex; flex-direction: column; gap: 16px; transition: background .25s, border-color .25s;}.persona-head{ display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; padding-bottom: 16px; border-bottom: 1px solid var(--c-border); transition: background .25s, border-color .25s;}
.persona-name { font-size: 1.8rem; font-weight: 700; color: var(--on-tint-head); letter-spacing: -0.01em; }
.persona-tags { font-size: 1.4rem; font-weight: 400; color: var(--c-hi); }
.persona-block-label { font-size: 1.2rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--c-hi); margin-bottom: 8px; }
.persona-list { list-style: none; display: flex; flex-direction: column; gap: 6px; }
.persona-list li { font-size: 1.6rem; font-weight: 400; color: var(--on-tint); line-height: 1.5; padding-left: 16px; position: relative; }.persona-list li::before{ content: ''; position: absolute; left: 0; top: 9px; width: 5px; height: 5px; border-radius: 50%; background: var(--c-hi); transition: background .25s, border-color .25s;}
.persona-quote { font-size: 1.6rem; font-weight: 400; font-style: italic; color: var(--on-tint); line-height: 1.6; border-left: 2px solid var(--c-hi); padding-left: 16px; margin-top: auto; }/* ── FOOTER ── */
footer{ border-top: 1px solid var(--border); padding: 24px 32px; transition: background .25s, border-color .25s;}
.footer-inner { max-width: 1280px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; }
.footer-text { font-size: 1.2rem; color: var(--text-tertiary); }
.footer-text span { color: var(--c-hi); }

@media (max-width: 768px) {
  .nav-hamburger { display: flex; }
  .dropdown-menu { left: auto; right: 0; }
  .snav-proj-nav .snav-proj:last-child { padding-right: 7px; }.nav-links{ position: absolute; top: calc(100% + 6px); right: 0; flex-direction: column; align-items: stretch; gap: 0; min-width: 220px; background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 6px; box-shadow: 0 12px 32px rgba(0,0,0,.12); display: none; transition: background .25s, border-color .25s;}
  [data-theme="dark"] .nav-links { box-shadow: 0 16px 40px rgba(0,0,0,.5); }
  .nav-links.open { display: flex; }
  .nav-links li { width: 100%; }
  .nav-links a { width: 100%; padding: 11px 12px; border-radius: 6px; font-size: 1.4rem; font-weight: 400; }.theme-toggle-li{ display: flex; align-items: center; justify-content: space-between; width: 100%; margin-top: 4px; padding: 16px 12px 11px; border-top: 1px solid var(--border); transition: background .25s, border-color .25s;} .theme-toggle-label { display: inline; font-size: 1.4rem; font-weight: 400; color: var(--text-muted); } .theme-toggle-li .theme-toggle-wrap { margin: 0; padding: 0; border-left: none; }
}
@media (max-width: 860px) {
  .split, .feature-grid, .feature-grid.cols-3, .persona-grid, .img-grid.cols-2, .img-grid.cols-3, .type-row, .split-media, .wireframe-row { grid-template-columns: 1fr; }
  .split.flip { direction: ltr; }
  .type-row { gap: 6px; padding: 14px 0; }
  .cs-hero { padding: 156px 20px 48px; }
  .section-wrap, nav { padding: 0 20px; }
  .section-nav-inner { padding: 0 20px; }
  .snav-proj-label { display: none; }
  .snav-proj-nav { padding-left: 8px; }
  .next-inner, .contact-strip-inner { padding: 0 20px; }
  .page-h1 { font-size: 2.6rem; }
  .hero-meta-row { gap: 24px; }
  /* Concept tag moves to the hero's top-right, opposite the eyebrow. Absolute
     so it lifts out of the meta row without reordering the markup; the eyebrow
     reserves room so a long one wraps before reaching it. */
  .cs-hero-inner { position: relative; }
  .cs-hero-inner .page-eyebrow { padding-right: 84px; }
  .hero-meta-row .tag-gray { position: absolute; top: 0; right: 0; margin-left: 0; align-self: auto; }
}
