/* byre.dev site.css — pass-2 design layer (SV1-401..403).
   Uses @byre/brocade semantic tokens; no hardcoded values.
   Mode toggle classes (.mode-light, .mode-dark) are applied to <body>
   by the inline mode-toggle script; brocade's @media (prefers-color-scheme)
   handles system mode automatically when no class is present. */

:root {
  color-scheme: light dark;
}

/* --- A11y (SV1-703) --- */

.skip-link {
  position: absolute;
  top: -100px;
  left: 0;
  background: var(--brocade-color-info-base);
  color: var(--brocade-color-info-foreground);
  padding: var(--brocade-size-padding-sm) var(--brocade-size-padding-md);
  text-decoration: none;
  z-index: 1000;
  font-weight: var(--brocade-font-weight-medium);
}
.skip-link:focus {
  top: 0;
  outline: 3px solid var(--brocade-color-border-focus);
  outline-offset: 2px;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--brocade-color-border-focus);
  outline-offset: 2px;
  border-radius: 2px;
}

/* Active nav link (set at runtime via mod-bundle). */
.site-nav a[aria-current="page"] {
  color: var(--brocade-color-link-base);
  font-weight: var(--brocade-font-weight-medium);
  text-decoration: underline;
  text-underline-offset: 4px;
}

html, body {
  margin: 0;
  padding: 0;
}

body {
  background: var(--brocade-color-background-base);
  color: var(--brocade-color-foreground-base);
  font-family: var(--brocade-font-family-base);
  font-size: var(--brocade-font-size-base);
  line-height: 1.55;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

main {
  flex: 1 0 auto;
  max-width: 72ch;
  margin: 0 auto;
  padding: var(--brocade-size-padding-lg) var(--brocade-size-padding-md);
  width: 100%;
  box-sizing: border-box;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--brocade-font-family-heading);
  font-weight: var(--brocade-font-weight-heading);
  color: var(--brocade-color-foreground-base);
  margin: var(--brocade-size-padding-lg) 0 var(--brocade-size-padding-sm);
  line-height: 1.2;
}

h1 { font-size: var(--brocade-font-size-heading-2); margin-top: 0; }
h2 { font-size: var(--brocade-font-size-heading-3); }
h3 { font-size: var(--brocade-font-size-heading-4); }
h4 { font-size: var(--brocade-font-size-heading-5); }

p { margin: 0 0 var(--brocade-size-padding-md); }

p.tagline {
  font-size: var(--brocade-font-size-lg);
  color: var(--brocade-color-foreground-muted);
  margin-top: 0;
}

a {
  color: var(--brocade-color-link-base);
  text-decoration: underline;
  text-underline-offset: 2px;
}
a:hover { color: var(--brocade-color-link-hover); }
a:visited { color: var(--brocade-color-link-visited); }

code, pre {
  font-family: var(--brocade-font-family-mono);
  font-size: var(--brocade-font-size-sm);
}

code {
  background: var(--brocade-color-background-muted);
  padding: 0.1em 0.35em;
  border-radius: 3px;
}

pre {
  background: var(--brocade-color-background-muted);
  padding: var(--brocade-size-padding-md);
  border-radius: 4px;
  overflow-x: auto;
  border: 1px solid var(--brocade-color-border-muted);
}

pre code {
  background: none;
  padding: 0;
}

dl { display: grid; grid-template-columns: max-content 1fr; gap: var(--brocade-size-padding-xs) var(--brocade-size-padding-md); margin: 0 0 var(--brocade-size-padding-md); }
dt { font-weight: var(--brocade-font-weight-medium); color: var(--brocade-color-foreground-muted); }
dd { margin: 0; }

ul, ol { margin: 0 0 var(--brocade-size-padding-md); padding-left: var(--brocade-size-padding-lg); }
li { margin: 0 0 var(--brocade-size-padding-xs); }

/* --- Site nav --- */

.site-nav {
  border-bottom: 1px solid var(--brocade-color-border-muted);
  background: var(--brocade-color-background-elevated);
  padding: var(--brocade-size-padding-sm) var(--brocade-size-padding-md);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--brocade-size-padding-md);
  flex-wrap: wrap;
}

.site-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: var(--brocade-size-padding-md);
  flex-wrap: wrap;
}

.site-nav a {
  color: var(--brocade-color-foreground-base);
  text-decoration: none;
  font-weight: var(--brocade-font-weight-medium);
}
.site-nav a:hover { color: var(--brocade-color-link-base); }

/* --- Site footer --- */

.site-footer {
  border-top: 1px solid var(--brocade-color-border-muted);
  background: var(--brocade-color-background-muted);
  padding: var(--brocade-size-padding-md);
  color: var(--brocade-color-foreground-muted);
  font-size: var(--brocade-font-size-sm);
  text-align: center;
  flex: 0 0 auto;
}

.site-footer p { margin: 0 0 var(--brocade-size-padding-xs); }

/* --- Mode toggle --- */

.mode-toggle {
  display: inline-flex;
  border: 1px solid var(--brocade-color-border-base);
  border-radius: 4px;
  overflow: hidden;
}

.mode-toggle button {
  background: transparent;
  color: var(--brocade-color-foreground-muted);
  border: none;
  padding: var(--brocade-size-padding-xs) var(--brocade-size-padding-sm);
  font-family: inherit;
  font-size: var(--brocade-font-size-sm);
  cursor: pointer;
  border-right: 1px solid var(--brocade-color-border-muted);
}

.mode-toggle button:last-child { border-right: none; }

.mode-toggle button[aria-pressed="true"] {
  background: var(--brocade-color-background-active);
  color: var(--brocade-color-foreground-base);
  font-weight: var(--brocade-font-weight-medium);
}

.mode-toggle button:hover {
  background: var(--brocade-color-background-hover);
  color: var(--brocade-color-foreground-base);
}

/* --- Catalog filter (iter-6 SV1-604) --- */

.catalog-filter {
  margin: var(--brocade-size-padding-sm) 0;
  padding: var(--brocade-size-padding-sm) var(--brocade-size-padding-md);
  background: var(--brocade-color-background-muted);
  border-radius: 4px;
  font-size: var(--brocade-font-size-sm);
}

.catalog-filter label {
  display: inline-flex;
  align-items: center;
  gap: var(--brocade-size-padding-xs);
  cursor: pointer;
}

.catalog-filter .filter-count {
  color: var(--brocade-color-foreground-muted);
  font-size: var(--brocade-font-size-xs);
}

.cert-badge {
  display: inline-block;
  color: var(--brocade-color-success-foreground);
  background: var(--brocade-color-success-base);
  border-radius: 50%;
  width: 1.2em;
  height: 1.2em;
  text-align: center;
  line-height: 1.2em;
  font-size: var(--brocade-font-size-xs);
  font-weight: var(--brocade-font-weight-medium);
  vertical-align: middle;
}

body.certified-only .item-list li[data-certified="false"] {
  display: none;
}

/* --- Lists (areas, specs, catalog types, etc.) --- */

.area-list, .spec-list, .catalog-list, .list-list, .item-list, .list-item-refs {
  list-style: none;
  padding-left: 0;
}

.area-list li, .spec-list li, .catalog-list li, .list-list li, .item-list li, .list-item-refs li {
  border-bottom: 1px solid var(--brocade-color-border-muted);
  padding: var(--brocade-size-padding-sm) 0;
}

.area-list li:last-child, .spec-list li:last-child, .catalog-list li:last-child, .list-list li:last-child, .item-list li:last-child, .list-item-refs li:last-child {
  border-bottom: none;
}

.count {
  color: var(--brocade-color-foreground-muted);
  font-size: var(--brocade-font-size-sm);
}

/* --- Roadmap --- */

.rm-tree, .rm-tree ul {
  list-style: none;
  padding-left: var(--brocade-size-padding-md);
}

.rm-tree > li { padding: var(--brocade-size-padding-sm) 0; }

.rm-id {
  font-size: var(--brocade-font-size-xs);
  color: var(--brocade-color-foreground-subtle);
}

.rm-status {
  display: inline-block;
  font-size: var(--brocade-font-size-xs);
  padding: 0.1em 0.45em;
  border-radius: 3px;
  font-weight: var(--brocade-font-weight-medium);
  margin-left: 0.25em;
}

.rm-status-done {
  background: var(--brocade-color-success-base);
  color: var(--brocade-color-success-foreground);
}

.rm-status-active {
  background: var(--brocade-color-info-base);
  color: var(--brocade-color-info-foreground);
}

.rm-status-proposed {
  background: var(--brocade-color-background-muted);
  color: var(--brocade-color-foreground-muted);
  border: 1px solid var(--brocade-color-border-base);
}

.rm-status-blocked {
  background: var(--brocade-color-warning-base);
  color: var(--brocade-color-warning-foreground);
}

.rm-status-archived {
  background: var(--brocade-color-background-active);
  color: var(--brocade-color-foreground-subtle);
}

.rm-prose {
  margin: var(--brocade-size-padding-xs) 0;
  padding-left: var(--brocade-size-padding-md);
  border-left: 2px solid var(--brocade-color-border-muted);
  color: var(--brocade-color-foreground-muted);
  font-size: var(--brocade-font-size-sm);
  max-width: 70ch;
}

.rm-prose p { margin: 0 0 var(--brocade-size-padding-xs); }

/* --- catalog-preview rendering (iter 6 SV1-603) --- */

catalog-preview { display: block; min-height: 2em; }
catalog-preview[data-state="loading"] { opacity: 0.5; }
catalog-preview[data-state="error"] { color: var(--brocade-color-danger-base); }

.cp-deferred {
  padding: var(--brocade-size-padding-md);
  background: var(--brocade-color-background-muted);
  border: 1px dashed var(--brocade-color-border-base);
  border-radius: 4px;
  color: var(--brocade-color-foreground-muted);
  font-size: var(--brocade-font-size-sm);
}

.cp-deferred p { margin: 0 0 var(--brocade-size-padding-xs); }
.cp-deferred p:last-child { margin: 0; }

.cp-iframe {
  width: 100%;
  border: 1px solid var(--brocade-color-border-base);
  border-radius: 4px;
  min-height: 200px;
}

.cp-root {
  padding: var(--brocade-size-padding-md);
  background: var(--brocade-color-background-elevated);
  border: 1px solid var(--brocade-color-border-base);
  border-radius: 4px;
}

/* --- byre-draft rendering (iter 6) --- */

byre-draft { display: block; }
byre-draft[data-state="loading"] { opacity: 0.5; }
byre-draft[data-state="error"] { color: var(--brocade-color-danger-base); }

.draft-section {
  margin: var(--brocade-size-padding-lg) 0;
}

.draft-section .draft-section {
  margin: var(--brocade-size-padding-md) 0 var(--brocade-size-padding-md) var(--brocade-size-padding-md);
  border-left: 2px solid var(--brocade-color-border-muted);
  padding-left: var(--brocade-size-padding-md);
}

.draft-prose {
  max-width: 70ch;
}

.draft-prose p {
  margin: 0 0 var(--brocade-size-padding-sm);
}

.draft-requirement {
  margin: var(--brocade-size-padding-sm) 0;
  padding: var(--brocade-size-padding-sm) var(--brocade-size-padding-md);
  background: var(--brocade-color-background-muted);
  border-left: 3px solid var(--brocade-color-info-base);
  border-radius: 0 4px 4px 0;
}

.draft-requirement h5 {
  margin: 0 0 var(--brocade-size-padding-xs);
  font-size: var(--brocade-font-size-sm);
}

.draft-requirement .draft-level {
  display: inline-block;
  font-size: var(--brocade-font-size-xs);
  padding: 0.1em 0.45em;
  background: var(--brocade-color-info-base);
  color: var(--brocade-color-info-foreground);
  border-radius: 3px;
  margin-left: 0.25em;
}

.draft-requirement p {
  margin: 0;
  font-size: var(--brocade-font-size-sm);
  max-width: 70ch;
}
