/* new.29court.com front door. Tokens only: every value is a --29d-* token.
   Layout and local component glue live here; product components are DS. */
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { background: var(--29d-bg); color: var(--29d-text-1); font-family: var(--29d-font-ui); font-size: var(--29d-body-size); line-height: var(--29d-body-lh); }
a { color: var(--29d-blue-700); text-decoration: none; }
a:hover { text-decoration: underline; }
::selection { background: var(--29d-coral-100); }

/* Header */
.top { position: sticky; top: 0; z-index: 40; background: var(--29d-bg); border-bottom: 1px solid var(--29d-border); }
.top-in { max-width: 1200px; margin: 0 auto; padding: 0 var(--29d-page-pad); height: 60px; display: flex; align-items: center; gap: var(--29d-s-6); }
.brand { display: flex; align-items: center; gap: var(--29d-s-3); color: var(--29d-text-1); font-family: var(--29d-font-display); font-weight: var(--29d-weight-xbold); font-size: var(--29d-text-lg); }
.brand:hover { text-decoration: none; }
.brand img { width: 36px; height: 36px; border-radius: var(--29d-r-2); display: block; }
.nav { display: flex; gap: var(--29d-s-6); margin-left: var(--29d-s-4); }
.nav a { color: var(--29d-text-2); font-size: var(--29d-text-md); font-weight: var(--29d-weight-medium); }
.nav a:hover { color: var(--29d-text-1); text-decoration: none; }
.top-actions { margin-left: auto; display: flex; align-items: center; gap: var(--29d-s-3); }
.search-pill { display: flex; align-items: center; gap: var(--29d-s-3); height: var(--29d-control-h); padding: 0 var(--29d-s-4); border: 1px solid var(--29d-border); border-radius: var(--29d-pill); background: var(--29d-surface); color: var(--29d-text-3); font: inherit; font-size: var(--29d-text-md); cursor: pointer; min-width: 210px; }
.search-pill:hover { background: var(--29d-wash); }
.search-pill .keys { margin-left: auto; display: flex; gap: var(--29d-s-0); }

/* Hero */
.hero { max-width: 880px; margin: 0 auto; padding: var(--29d-s-16) var(--29d-page-pad) var(--29d-s-12); text-align: center; }
.eyebrow { font-family: var(--29d-font-mono); font-size: var(--29d-text-xs); letter-spacing: .14em; text-transform: uppercase; color: var(--29d-coral-700); font-weight: var(--29d-weight-semibold); }
.hero h1 { font-family: var(--29d-font-display); font-size: var(--29d-text-4xl); line-height: var(--29d-lh-4xl); font-weight: var(--29d-weight-xbold); margin: var(--29d-s-4) 0 var(--29d-s-4); }
.hero .sub { font-size: var(--29d-text-lg); line-height: var(--29d-lh-lg); color: var(--29d-text-2); max-width: 640px; margin: 0 auto; }
.hero-search { margin: var(--29d-s-8) auto 0; max-width: 560px; width: 100%; display: flex; align-items: center; gap: var(--29d-s-3); height: 52px; padding: 0 var(--29d-s-6); border: 1px solid var(--29d-border-strong); border-radius: var(--29d-pill); background: var(--29d-surface); color: var(--29d-text-3); font: inherit; font-size: var(--29d-text-md); cursor: text; text-align: left; }
.hero-search:hover { background: var(--29d-wash); }
.hero-search .keys { margin-left: auto; display: flex; gap: var(--29d-s-0); flex: none; }
.hero-ctas { display: flex; gap: var(--29d-s-3); justify-content: center; margin-top: var(--29d-s-6); flex-wrap: wrap; }
.hero-note { margin-top: var(--29d-s-4); font-size: var(--29d-text-sm); color: var(--29d-text-2); }

section[id] { scroll-margin-top: 84px; }
.ledger-line > span:first-child { flex: none; white-space: nowrap; }

/* Sections */
.section { max-width: 1200px; margin: 0 auto; padding: var(--29d-section-gap) var(--29d-page-pad); }
.sec-head { max-width: 680px; margin-bottom: var(--29d-s-8); }
.sec-head.center { margin-left: auto; margin-right: auto; text-align: center; }
.sec-head h2 { font-family: var(--29d-font-display); font-size: var(--29d-text-3xl); line-height: var(--29d-lh-3xl); font-weight: var(--29d-weight-xbold); margin-bottom: var(--29d-s-3); }
.sec-head p { color: var(--29d-text-2); font-size: var(--29d-text-md); line-height: var(--29d-lh-md); }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--29d-s-4); }
.step-num { font-family: var(--29d-font-mono); font-size: var(--29d-text-xs); color: var(--29d-coral-700); font-weight: var(--29d-weight-semibold); letter-spacing: .1em; }
.card-pad { padding: var(--29d-card-pad); }
.card-pad h3 { font-size: var(--29d-text-md); font-weight: var(--29d-weight-semibold); margin: var(--29d-s-2) 0 var(--29d-s-2); }
.card-pad p { color: var(--29d-text-2); font-size: var(--29d-text-md); line-height: var(--29d-lh-md); }

/* Rules demo */
.demo-card { border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); background: var(--29d-surface); overflow: hidden; }
.demo-grid { display: grid; grid-template-columns: 320px 1fr; min-height: 430px; }
.demo-side { border-right: 1px solid var(--29d-border); padding: var(--29d-s-6); background: var(--29d-sunken); }
.demo-side h3 { font-size: var(--29d-text-sm); text-transform: uppercase; letter-spacing: .1em; color: var(--29d-text-2); font-family: var(--29d-font-mono); font-weight: var(--29d-weight-semibold); margin-bottom: var(--29d-s-4); }
.rule-row { display: flex; align-items: center; gap: var(--29d-s-3); padding: var(--29d-s-3) 0; border-bottom: 1px solid var(--29d-border); }
.rule-row:last-of-type { border-bottom: 0; }
.rule-meta { flex: 1; min-width: 0; }
.rule-name { font-weight: var(--29d-weight-semibold); font-size: var(--29d-text-md); }
.rule-sub { font-size: var(--29d-text-sm); color: var(--29d-text-2); }
.demo-main { padding: var(--29d-s-6); display: flex; flex-direction: column; gap: var(--29d-s-4); }
.presets { display: flex; gap: var(--29d-s-2); flex-wrap: wrap; }
.draft-in { width: 100%; min-height: 118px; resize: vertical; border: 1px solid var(--29d-border); border-radius: var(--29d-r-2); background: var(--29d-bg); color: var(--29d-text-1); font: inherit; font-size: 16px; line-height: var(--29d-lh-md); padding: var(--29d-s-3) var(--29d-s-4); }
.draft-in:focus { outline: none; box-shadow: var(--29d-focus-halo); border-color: var(--29d-coral-500); }
.pass-steps { display: none; flex-direction: column; gap: var(--29d-s-2); }
.pass-steps.on { display: flex; }
.pass-step { display: flex; align-items: center; gap: var(--29d-s-3); font-size: var(--29d-text-sm); color: var(--29d-text-3); }
.pass-step .dot { width: 8px; height: 8px; border-radius: var(--29d-pill); background: var(--29d-border-strong); flex: none; }
.pass-step.run .dot { background: var(--29d-amber-600); }
.pass-step.done { color: var(--29d-text-2); }
.pass-step.done .dot { background: var(--29d-green-600); }
.draft-out { display: none; border: 1px solid var(--29d-border); border-radius: var(--29d-r-2); background: var(--29d-bg); padding: var(--29d-s-4); font-size: 16px; line-height: var(--29d-lh-md); white-space: pre-wrap; }
.draft-out.on { display: block; }
.draft-out mark { background: var(--29d-coral-100); color: inherit; border-radius: var(--29d-r-1); padding: 0 var(--29d-s-0); }
.fired { display: none; flex-wrap: wrap; gap: var(--29d-s-2); align-items: center; }
.fired.on { display: flex; }
.fired .lbl { font-size: var(--29d-text-sm); color: var(--29d-text-3); font-weight: var(--29d-weight-medium); }
.demo-foot { display: flex; align-items: center; gap: var(--29d-s-4); flex-wrap: wrap; }
.sim-note { font-size: var(--29d-text-sm); color: var(--29d-text-2); }

/* Platform preview */
.split { display: grid; grid-template-columns: 1fr 1.2fr; gap: var(--29d-s-8); align-items: start; }
.code-card { border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); background: var(--29d-surface); overflow: hidden; }
.code-head { display: flex; align-items: center; gap: var(--29d-s-3); padding: var(--29d-s-3) var(--29d-s-4); border-bottom: 1px solid var(--29d-border); font-family: var(--29d-font-mono); font-size: var(--29d-text-sm); color: var(--29d-text-2); }
.code-body { padding: var(--29d-s-4); overflow-x: auto; font-family: var(--29d-font-mono); font-size: var(--29d-text-sm); line-height: 1.65; white-space: pre; color: var(--29d-text-1); }
.tok-c { color: var(--29d-text-2); }
.tok-k { color: var(--29d-coral-700); font-weight: var(--29d-weight-semibold); }
.tok-t { color: var(--29d-green-700); }
[data-theme="dark"] .tok-t { color: var(--29d-teal-600); }
.app-chips { display: flex; flex-wrap: wrap; gap: var(--29d-s-2); margin-top: var(--29d-s-4); }
.app-chip { display: inline-flex; align-items: center; gap: var(--29d-s-2); border: 1px solid var(--29d-border); border-radius: var(--29d-pill); padding: var(--29d-s-1) var(--29d-s-3); font-size: var(--29d-text-sm); background: var(--29d-surface); }
.app-chip .dot { width: 7px; height: 7px; border-radius: var(--29d-pill); background: var(--29d-green-600); }
.app-chip .dot.beta { background: var(--29d-amber-600); }
.bullet-list { display: grid; gap: var(--29d-s-3); margin-top: var(--29d-s-4); }
.bullet-list li { list-style: none; display: flex; gap: var(--29d-s-3); color: var(--29d-text-2); font-size: var(--29d-text-md); line-height: var(--29d-lh-md); }
.bullet-list .tick { color: var(--29d-green-700); font-weight: var(--29d-weight-bold); flex: none; }

/* Studio transcript card */
.chat-card { border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); background: var(--29d-surface); padding: var(--29d-s-6); display: flex; flex-direction: column; gap: var(--29d-s-4); }
.proposal { border: 1px solid var(--29d-border); border-left: 3px solid var(--29d-coral-500); border-radius: var(--29d-r-2); padding: var(--29d-s-4); background: var(--29d-bg); }
.proposal h4 { font-size: var(--29d-text-md); margin-bottom: var(--29d-s-1); }
.proposal p { color: var(--29d-text-2); font-size: var(--29d-text-md); }
.ledger-line { font-family: var(--29d-font-mono); font-size: var(--29d-text-sm); color: var(--29d-text-3); display: flex; gap: var(--29d-s-3); align-items: center; }
.ledger-line .ok { color: var(--29d-green-700); font-weight: var(--29d-weight-semibold); }

/* Setup preview */
.setup-rows { border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); background: var(--29d-surface); overflow: hidden; }
.setup-row { display: flex; align-items: center; gap: var(--29d-s-4); padding: var(--29d-s-4) var(--29d-s-6); border-bottom: 1px solid var(--29d-border); }
.setup-row:last-child { border-bottom: 0; }
.setup-row .meta { flex: 1; }
.setup-row .meta b { display: block; font-size: var(--29d-text-md); }
.setup-row .meta span { color: var(--29d-text-3); font-size: var(--29d-text-sm); }

/* Signup */
.signup-card { max-width: 560px; margin: 0 auto; border: 1px solid var(--29d-border); border-radius: var(--29d-r-3); background: var(--29d-surface); padding: var(--29d-s-8); text-align: center; }
.signup-card h1, .signup-card h2 { font-family: var(--29d-font-display); font-size: var(--29d-text-2xl); font-weight: var(--29d-weight-xbold); margin-bottom: var(--29d-s-2); }
.signup-card p { color: var(--29d-text-2); margin-bottom: var(--29d-s-6); }
.signup-form { display: flex; gap: var(--29d-s-2); }
.signup-form .ds-input { flex: 1; font-size: 16px; height: 44px; }
.signup-err { display: none; margin-top: var(--29d-s-3); color: var(--29d-red-600); font-size: var(--29d-text-sm); text-align: left; }
.signup-err.on { display: block; }
.inbox-card { display: none; margin-top: var(--29d-s-6); text-align: left; border: 1px solid var(--29d-border); border-radius: var(--29d-r-2); background: var(--29d-sunken); padding: var(--29d-s-4); }
.inbox-card.on { display: block; }
.inbox-card .mail-head { font-size: var(--29d-text-sm); color: var(--29d-text-3); border-bottom: 1px solid var(--29d-border); padding-bottom: var(--29d-s-2); margin-bottom: var(--29d-s-3); }
.inbox-card .mail-head b { color: var(--29d-text-1); }
.inbox-note { font-size: var(--29d-text-sm); color: var(--29d-text-3); margin-top: var(--29d-s-3); line-height: var(--29d-lh-sm); }

/* Footer */
footer { border-top: 1px solid var(--29d-border); margin-top: var(--29d-s-8); }
.foot-in { max-width: 1200px; margin: 0 auto; padding: var(--29d-s-8) var(--29d-page-pad); display: flex; gap: var(--29d-s-6); align-items: center; flex-wrap: wrap; }
.foot-tag { font-family: var(--29d-font-display); font-weight: var(--29d-weight-bold); }
.foot-links { display: flex; gap: var(--29d-s-4); margin-left: auto; font-size: var(--29d-text-sm); }
.foot-links a { color: var(--29d-text-2); }
.foot-fine { width: 100%; font-size: var(--29d-text-sm); color: var(--29d-text-2); }

@media (max-width: 860px) {
  .nav { display: none; }
  .search-pill { min-width: 0; }
  .search-pill .txt { display: none; }
  .grid-3, .split, .demo-grid { grid-template-columns: 1fr; }
  .demo-side { border-right: 0; border-bottom: 1px solid var(--29d-border); }
  .hero h1 { font-size: var(--29d-text-3xl); line-height: var(--29d-lh-3xl); }
  .signup-form { flex-direction: column; }
  .setup-row { flex-wrap: wrap; }
  .setup-row .meta { flex: 1 1 100%; }
  .hero-search > span:first-child { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { animation: none !important; transition: none !important; }
}

/* Contrast repair (new2 campaign, DRATS #1): the DS badge keeps a light
   wash in dark theme while its text flips light. Locally scoped until
   the design system fixes the pairing at the source. */
[data-theme="dark"] .ds-badge-neutral { background: var(--29d-sunken); color: var(--29d-text-2); }

.vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
