/* Aeroworks base — Rev 01 (r01.1). GENERATED by aeroworks-brand/build-tokens.py.
   Load after aeroworks-tokens.css. Never hand-edit; rebuild. */

/* ---- type styles — every size on the 13/16/20/25/30/44/56 scale -------------------------- */
.t-display { font-family: var(--font-sans); font-weight: 600; font-size: var(--type-44); line-height: 1.1; letter-spacing: 0.14em; text-transform: uppercase; }
.t-statement { font-family: var(--font-sans); font-weight: 600; font-size: var(--type-44); line-height: 1.1; letter-spacing: 0.01em; text-wrap: balance; }
@media (min-width: 1024px) { .t-statement { font-size: var(--type-56); } }
.t-h1 { font-family: var(--font-sans); font-weight: 600; font-size: var(--type-30); line-height: 1.25; letter-spacing: 0.02em; }
.t-section { font-family: var(--font-sans); font-weight: 600; font-size: var(--type-25); line-height: 1.3; letter-spacing: 0.01em; }
.t-h2 { font-family: var(--font-sans); font-weight: 600; font-size: var(--type-20); line-height: 1.35; letter-spacing: 0; }
.t-lead { font-family: var(--font-sans); font-weight: 400; font-size: var(--type-20); line-height: 1.5; letter-spacing: 0; color: var(--body); }
.t-body { font-family: var(--font-sans); font-weight: 400; font-size: var(--type-16); line-height: 1.7; letter-spacing: 0; color: var(--body); }
.t-caption { font-family: var(--font-sans); font-weight: 500; font-size: var(--type-13); line-height: 1.5; letter-spacing: 0.08em; color: var(--caption); }
.t-mono { font-family: var(--font-mono); font-weight: 400; font-size: var(--type-13); line-height: 1.6; letter-spacing: 0.04em; }
.t-mono-tracked { font-family: var(--font-mono); font-weight: 400; font-size: var(--type-13); line-height: 1.6; letter-spacing: 0.10em; }

/* ---- element defaults ------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--body); font-family: var(--font-sans); font-weight: 400;
       font-size: var(--type-16); line-height: 1.7; -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, p, figure, table, ul, ol { margin: 0; }
h1, h2, h3, h4 { color: var(--ink); font-weight: 600; }
h1 { font-size: var(--type-30); line-height: 1.25; letter-spacing: 0.02em; }
h2 { font-size: var(--type-20); line-height: 1.35; }
h3, h4 { font-size: var(--type-16); line-height: 1.5; }
p { text-wrap: pretty; }
code, kbd, samp { font-family: var(--font-mono); font-size: var(--type-13); letter-spacing: 0.04em; }
img, svg { max-width: 100%; }

/* links: ink at rest, accent on hover — the accent is never at rest */
a { color: var(--ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.22em;
    text-decoration-color: var(--rule);
    transition: color var(--motion-state) var(--ease), text-decoration-color var(--motion-state) var(--ease); }
a:hover { color: var(--accent); text-decoration-color: currentColor; }

/* focus: 2 px Signal outline, 2 px offset — keyboard only */
:focus { outline: none; }
:focus-visible, a:focus-visible, .btn:focus-visible, button:focus-visible {
  outline: var(--focus-width) solid var(--focus); outline-offset: var(--focus-offset); border-radius: var(--radius); }

/* ---- rules: 2 px ink for structure, 1 px Graphite 300 inside content ---------------------- */
.rule-2 { border-top: var(--rule-structure) solid var(--rule-strong); }
.rule-1 { border-top: var(--rule-content) solid var(--rule); }

/* ---- buttons: square, one primary per view ------------------------------------------------ */
.btn { display: inline-flex; align-items: center; gap: var(--space-1); padding: 14px var(--space-3);
       font-family: var(--font-sans); font-weight: 500; font-size: var(--type-16); line-height: 1.25; letter-spacing: 0.10em;
       text-decoration: none; border: var(--rule-structure) solid transparent; border-radius: var(--radius); cursor: pointer;
       transition: background-color var(--motion-state) var(--ease), color var(--motion-state) var(--ease),
                   border-color var(--motion-state) var(--ease); }
.btn-primary { background: var(--btn-bg); color: var(--btn-ink); border-color: var(--btn-bg); }
.btn-primary:hover { background: var(--accent-fill); border-color: var(--accent-fill); color: var(--on-accent); }
.btn-secondary { background: transparent; color: var(--ink); border-color: var(--ink); }
.btn-secondary:hover { color: var(--accent); border-color: var(--accent); }
.btn-tertiary { background: none; border: 0; padding: 0; color: var(--accent); letter-spacing: 0.04em;
                text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.22em; }
.btn-tertiary:hover { color: var(--ink); }

/* ---- the dark data panel ------------------------------------------------------------------ */
.data-panel { background: var(--data-bg); color: var(--data-ink); border: var(--rule-content) solid var(--data-edge); }

/* ---- ledger: mono in every cell, zebra by rule, state as text ----------------------------- */
.ledger { width: 100%; border-collapse: collapse; font-family: var(--font-mono); font-size: var(--type-13);
          line-height: 1.6; letter-spacing: 0.04em; font-variant-numeric: tabular-nums; color: var(--ink); }
.ledger th, .ledger td { text-align: left; vertical-align: baseline; padding: var(--space-1) var(--cell-pad);
                         border-top: var(--rule-content) solid var(--rule); }
.ledger thead th { font-family: var(--font-sans); font-weight: 500; letter-spacing: 0.08em; color: var(--caption);
                   border-top: 0; border-bottom: var(--rule-content) solid var(--rule-strong); }
.ledger tbody th { font-family: var(--font-sans); font-weight: 500; letter-spacing: 0.08em; color: var(--ink); white-space: nowrap; }
.ledger tbody tr:nth-child(even) { background: var(--zebra); }
.ledger .num { text-align: right; }
.ledger .state { font-weight: 500; }
.data-panel .ledger { color: var(--data-ink); }
.data-panel .ledger th, .data-panel .ledger td { border-top-color: var(--data-rule); }
.data-panel .ledger thead th { color: var(--data-meta); border-bottom-color: var(--data-rule); }
.data-panel .ledger tbody th { color: var(--data-ink-2); }
.data-panel .ledger tbody tr:nth-child(even) { background: none; }
.ledger td > span { white-space: nowrap; }
/* .ledger-stack: one row per block at phone width — the label on its own line, fields wrap, never a scrollbar */
@media (max-width: 720px) {
  .ledger-stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .ledger-stack, .ledger-stack tbody, .ledger-stack caption { display: block; }
  .ledger-stack tr { display: flex; flex-wrap: wrap; column-gap: var(--space-2); padding: var(--space-2) 0;
                     border-top: var(--rule-content) solid var(--rule); }
  .data-panel .ledger-stack tr { border-top-color: var(--data-rule); }
  .ledger-stack tbody th, .ledger-stack td { display: block; border: 0; padding: 0; white-space: nowrap; }
  .ledger-stack tbody th { flex: 0 0 100%; margin-bottom: 4px; }
  .ledger-stack td + td::before { content: "/ "; opacity: 0.5; }
  .ledger-stack td:empty { display: none; }
  .ledger-stack .num { text-align: left; }
}

/* ---- status chip: functional only, never in marketing ------------------------------------- */
.chip { display: inline-flex; align-items: center; gap: var(--space-1); padding: 2px var(--space-1);
        font-family: var(--font-mono); font-size: var(--type-13); line-height: 1.6; letter-spacing: 0.04em;
        color: var(--chip-text, var(--ink)); border: var(--rule-content) solid var(--chip); border-radius: var(--radius); }
.chip::before { content: ""; width: 8px; height: 8px; background: var(--chip); flex: none; }
.chip-go { --chip: var(--aw-status-go); --chip-text: var(--aw-status-go-text); }
.chip-caution { --chip: var(--aw-status-caution); --chip-text: var(--aw-status-caution-text); }
.chip-no-go { --chip: var(--aw-status-no-go); --chip-text: var(--aw-status-no-go-text); }
.chip-info { --chip: var(--aw-status-info); --chip-text: var(--ink); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .chip { --chip-text: var(--ink); } }
:root[data-theme="dark"] .chip { --chip-text: var(--ink); }

/* ---- the mark's signature: strips build bottom-up, once, on load ------------------------- */
/* @starting-style + transition, not keyframes: the resting state is visible, so a renderer that never ticks
   (print, a preview generator) still shows the mark — a keyframe with fill-mode hid it there. */
.strip { transform-box: fill-box; opacity: 1; transform: none;
         transition: opacity var(--motion-panel) var(--ease), transform var(--motion-panel) var(--ease); }
.strip:nth-child(2) { transition-delay: var(--strip-stagger); }
.strip:nth-child(3) { transition-delay: calc(2 * var(--strip-stagger)); }
@starting-style { .strip { opacity: 0; transform: translateX(var(--strip-shift)); } }

/* ---- reduced motion: nothing moves ------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: 0.01ms !important; transition-delay: 0s !important; animation: none !important; }
}
