/* Design tokens, document structure, typography, native controls, and focus.
   Feature styles build on these values instead of declaring new palettes or
   control geometry. Keep this file first in render::css(). */
@layer brewery-foundation, brewery-components, brewery-forge, brewery-activity, brewery-work-items, brewery-themes;

@layer brewery-foundation {
  :root {
    color-scheme: light dark;
    font-family:
      "Brewery Sans",
      ui-sans-serif,
      system-ui,
      -apple-system,
      "Segoe UI",
      sans-serif;
    --bg: #fbfbfa;
    --fg: #1a1c1e;
    --muted: #5d6573;
    --faint: #7c828b;
    --text-tertiary: #626a74;
    --line: #e3e4df;
    --line-strong: #d3d5cf;
    --border-control: #a2a6a1;
    --panel: #ffffff;
    --field: #ffffff;
    --accent: #a8481c;
    --accent-strong: #8a3a16;
    --accent-soft: #f7ebe1;
    --on-accent: #ffffff;
    --on-danger: #ffffff;
    --danger: #b42318;
    --success: #187737;
    --warning: #8a5d00;
    --state-open: #15803d;
    --state-merged: #7c3aed;
    --code-bg: #f3f3ef;
    --code-fg: #1f2933;
    --radius: 0.3rem;
    --shadow-pop: 0 8px 24px rgb(0 0 0 / 14%);
    --nav-control-height: 2.5rem;
    --strip-height: 2.25rem;
    --mono:
      ui-monospace, "JetBrains Mono", SFMono-Regular, Menlo, Consolas, monospace;
    accent-color: var(--accent);
  }
}
html {
  min-height: 100%;
  background: var(--bg);
}
body.brewery {
  --page-width: 1280px;
  --page-gutter: 1.25rem;
  --header-height: 3.5rem;
  min-height: 100vh;
  margin: 0;
  display: flex;
  flex-direction: column;
  line-height: 1.55;
  background: var(--bg);
  color: var(--fg);
  -webkit-font-smoothing: antialiased;
}

@layer brewery-foundation {
  @scope (.brewery) {
    * {
      box-sizing: border-box;
    }
    .clipboard-fallback {
      position: fixed;
      opacity: 0;
      pointer-events: none;
    }
    .visually-hidden {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
      border: 0;
    }
    :where([hidden]) {
      display: none !important;
    }
    ::selection {
      background: color-mix(in srgb, var(--accent) 24%, transparent);
    }
    :target {
      scroll-margin-top: 4.5rem;
    }
    .skip-link {
      position: fixed;
      inset-block-start: 0.5rem;
      inset-inline-start: 0.5rem;
      z-index: 100;
      padding: 0.45rem 0.7rem;
      border: 2px solid var(--accent);
      border-radius: var(--radius);
      background: var(--panel);
      color: var(--fg);
      font-weight: 650;
      transform: translateY(-200%);
    }
    .skip-link:focus {
      transform: translateY(0);
    }
    .site-header-inner,
    .site-main,
    .site-footer-inner {
      width: min(100% - 2 * var(--page-gutter), var(--page-width));
      margin-inline: auto;
    }
    .site-header {
      position: sticky;
      top: 0;
      z-index: 10;
      border-bottom: 1px solid var(--line);
      background: color-mix(in srgb, var(--bg) 88%, transparent);
      backdrop-filter: blur(12px);
    }
    .site-header-inner {
      display: flex;
      align-items: center;
      gap: clamp(0.75rem, 3vw, 2rem);
      min-height: var(--header-height);
    }
    .primary-nav,
    .auth-nav {
      display: flex;
      align-items: center;
    }
    .primary-nav {
      gap: 0.15rem;
      min-width: 0;
    }
    .auth-nav {
      margin-left: auto;
      justify-content: flex-end;
      gap: 0.3rem;
      flex: 0 0 auto;
    }
    .nav-link {
      padding: 0.4rem 0.65rem;
      border-radius: var(--radius);
      color: var(--muted);
      font-size: 0.92rem;
      font-weight: 600;
      text-decoration: none;
    }
    .nav-link:hover {
      background: color-mix(in srgb, var(--fg) 7%, transparent);
      color: var(--fg);
    }
    .nav-cta {
      min-height: 2.15rem;
      padding: 0.35rem 0.85rem;
      font-size: 0.9rem;
    }
    .nav-icon,
    .nav-account {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      height: 2.25rem;
      border-radius: var(--radius);
      color: var(--muted);
      cursor: pointer;
      list-style: none;
      text-decoration: none;
    }
    .nav-icon {
      width: 2.25rem;
    }
    .nav-account {
      gap: 0.2rem;
      padding: 0 0.3rem;
    }
    .nav-icon::-webkit-details-marker,
    .nav-account::-webkit-details-marker {
      display: none;
    }
    .nav-icon:hover,
    .nav-account:hover,
    .menu[open] > .nav-icon,
    .menu[open] > .nav-account {
      background: color-mix(in srgb, var(--fg) 7%, transparent);
      color: var(--fg);
    }
    .nav-icon .brewery-icon {
      width: 1.1rem;
      height: 1.1rem;
    }
    .nav-account .brewery-icon {
      width: 0.8rem;
      height: 0.8rem;
    }
    .site-main {
      flex: 1;
      padding: 1rem 0 1.5rem;
    }
    h1 {
      margin: 0 0 0.35rem;
      font-size: 1.45rem;
      line-height: 1.2;
      font-weight: 650;
      letter-spacing: -0.01em;
    }
    h2 {
      margin: 1.4rem 0 0.55rem;
      font-size: 1.12rem;
      font-weight: 650;
      letter-spacing: -0.01em;
    }
    h3 {
      margin: 1.1rem 0 0.5rem;
      font-size: 1rem;
      font-weight: 650;
    }
    h1,
    h2,
    h3 {
      text-wrap: balance;
    }
    p {
      margin: 0.35rem 0;
    }
    a {
      color: var(--accent-strong);
      text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent);
      text-underline-offset: 0.18em;
    }
    a:hover {
      text-decoration-color: currentColor;
    }
    nav {
      color: var(--muted);
    }
    .primary-nav a {
      position: relative;
      display: inline-flex;
      height: 2.25rem;
      align-items: center;
      padding: 0 0.7rem;
      border-radius: var(--radius);
      color: var(--muted);
      font-size: 0.92rem;
      font-weight: 550;
      text-decoration: none;
      white-space: nowrap;
    }
    .primary-nav a:hover {
      background: color-mix(in srgb, var(--fg) 7%, transparent);
      color: var(--fg);
    }
    .primary-nav a[aria-current="page"] {
      color: var(--fg);
      font-weight: 650;
    }
    .primary-nav a[aria-current="page"]::after {
      position: absolute;
      right: 0.7rem;
      bottom: calc((2.25rem - var(--header-height)) / 2 - 1px);
      left: 0.7rem;
      height: 2px;
      border-radius: 2px 2px 0 0;
      background: var(--accent);
      content: "";
    }
    .brand {
      display: flex;
      flex: none;
      align-items: center;
    }
    .brand-logo {
      display: block;
      width: auto;
      max-width: 10rem;
      height: 2rem;
    }
    .brewery-icon {
      display: inline-block;
      width: 1rem;
      height: 1rem;
      flex: none;
      vertical-align: middle;
    }
    .icon-link {
      font-weight: 600;
    }
    .muted {
      color: var(--muted);
    }
    code,
    pre {
      font-family: var(--mono);
    }
    label {
      display: block;
      margin: 0.7rem 0 0.3rem;
      font-weight: 600;
    }
    label select,
    label textarea,
    label input:not([type="checkbox"]):not([type="radio"]) {
      display: block;
      margin-top: 0.35rem;
      font-weight: 400;
    }
    label:has(> input[type="checkbox"]),
    label:has(> input[type="radio"]) {
      display: flex;
      gap: 0.5rem;
      align-items: flex-start;
      margin: 0.2rem 0;
      font-weight: 500;
    }
    label > input[type="checkbox"],
    label > input[type="radio"] {
      margin-top: calc((1lh - 1.05rem) / 2);
    }
    input[type="checkbox"],
    input[type="radio"] {
      appearance: none;
      display: grid;
      place-content: center;
      width: 1.05rem;
      height: 1.05rem;
      flex: 0 0 1.05rem;
      margin: 0;
      padding: 0;
      border: 1px solid var(--border-control);
      background: var(--field);
    }
    input[type="checkbox"] {
      border-radius: calc(var(--radius) - 0.05rem);
    }
    input[type="radio"] {
      border-radius: 50%;
    }
    input[type="checkbox"]::before {
      content: "";
      width: 0.52rem;
      height: 0.3rem;
      border-bottom: 0.13rem solid var(--on-accent);
      border-left: 0.13rem solid var(--on-accent);
      transform: rotate(-45deg) scale(0);
      transform-origin: center;
    }
    input[type="radio"]::before {
      content: "";
      width: 0.48rem;
      height: 0.48rem;
      border-radius: 50%;
      background: var(--on-accent);
      transform: scale(0);
    }
    input[type="checkbox"]:checked,
    input[type="radio"]:checked {
      border-color: var(--accent);
      background: var(--accent);
    }
    input[type="checkbox"]:checked::before,
    input[type="radio"]:checked::before {
      transform: rotate(-45deg) scale(1);
    }
    input[type="radio"]:checked::before {
      transform: scale(1);
    }
    input[type="checkbox"]:disabled,
    input[type="radio"]:disabled {
      opacity: 0.55;
      cursor: not-allowed;
    }
    input,
    textarea,
    select,
    button {
      font: inherit;
      padding: 0.5rem 0.65rem;
      border: 1px solid var(--border-control);
      border-radius: var(--radius);
      background: var(--field);
      color: var(--fg);
      background-image: none;
      box-shadow: none;
    }
    input:focus-visible,
    textarea:focus-visible,
    select:focus-visible,
    button:focus-visible,
    a:focus-visible,
    summary:focus-visible {
      outline: 2px solid var(--accent);
      outline-offset: 2px;
    }
    input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]) {
      width: min(100%, 28rem);
    }
    input[readonly] {
      width: min(100%, 32rem);
      color: var(--muted);
    }
    input[type="number"] {
      appearance: textfield;
      -moz-appearance: textfield;
    }
    input[type="number"]::-webkit-outer-spin-button,
    input[type="number"]::-webkit-inner-spin-button {
      -webkit-appearance: none;
      margin: 0;
    }
    textarea {
      width: min(100%, 42rem);
      max-width: 100%;
      min-height: 9rem;
      resize: vertical;
    }
    button {
      cursor: pointer;
      background: var(--accent-strong);
      border-color: var(--accent-strong);
      color: var(--on-accent);
      font-weight: 600;
    }
    button:hover {
      background: var(--accent);
      border-color: var(--accent);
    }
    button,
    a {
      transition:
        background-color 0.12s ease,
        border-color 0.12s ease,
        color 0.12s ease;
    }
    .link-button {
      padding: 0;
      border: 0;
      background: transparent;
      color: var(--accent-strong);
      font: inherit;
      font-weight: 600;
      text-decoration: underline;
      text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent);
      text-underline-offset: 0.18em;
    }
    .link-button:hover {
      background: transparent;
      border-color: transparent;
      color: var(--accent-strong);
      text-decoration-color: currentColor;
    }
    .link-button--danger,
    .link-button--danger:hover {
      color: var(--danger);
    }
    .feedback {
      min-height: 1.5em;
      margin: 0.35rem 0 0;
      color: var(--muted);
    }
    .feedback--error {
      color: var(--danger);
      font-weight: 600;
    }
    .error {
      color: var(--danger);
      font-weight: 600;
    }
    .logout-form {
      display: inline;
    }
    table {
      width: 100%;
      border-collapse: collapse;
      margin: 1rem 0;
    }
    th,
    td {
      text-align: left;
      padding: 0.5rem 0.45rem;
      border-bottom: 1px solid var(--line);
    }
    th {
      color: var(--muted);
      font-size: 0.9rem;
      font-weight: 600;
    }
    pre {
      overflow: auto;
      padding: 0.85rem 1rem;
      border-radius: var(--radius);
      background: var(--code-bg);
      color: var(--code-fg);
      border: 1px solid var(--line);
    }
    .manage {
      border: 1px solid var(--line);
      border-radius: var(--radius);
      padding: 1rem;
      margin: 1rem 0;
      background: var(--panel);
    }
    summary {
      cursor: pointer;
      font-weight: 600;
    }
    .site-footer {
      margin-top: 2rem;
      border-top: 1px solid var(--line);
      color: var(--muted);
      font-size: 0.88rem;
    }
    .site-footer-inner {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      align-items: center;
      gap: 0.75rem 2rem;
      padding: 1.1rem 0 1.4rem;
    }
    .site-footer p {
      margin: 0;
    }
    .footer-version {
      font-family: var(--mono);
      font-size: 0.8rem;
    }
    .site-footer-nav {
      display: flex;
      flex-wrap: wrap;
      gap: 0.35rem 1.25rem;
    }
    .site-footer-nav a {
      padding-block: 0.25rem;
      color: var(--muted);
      text-decoration: none;
    }
    .site-footer-nav a:hover {
      color: var(--fg);
      text-decoration: underline;
    }
  }
  @media (max-width: 700px) {
    body.brewery {
      --page-gutter: 1rem;
    }
    .brewery .site-header-inner {
      flex-wrap: wrap;
      column-gap: 0.5rem;
      row-gap: 0;
      min-height: 3.25rem;
      padding-top: 0.4rem;
    }
    .brewery .primary-nav {
      order: 3;
      flex: 1 0 100%;
      margin-inline: -0.7rem;
      overflow-x: auto;
      scrollbar-width: none;
    }
    .brewery .primary-nav a {
      height: 2.5rem;
    }
    .brewery .primary-nav a[aria-current="page"]::after {
      bottom: -1px;
    }
    .brewery .site-footer-inner {
      flex-direction: column;
      align-items: flex-start;
    }
    .brewery table {
      font-size: 0.9rem;
    }
  }
}
