  /* ======================================================================
     Naval Letter Builder - modern wizard UI
     Single-file HTML/CSS/JS implementing SECNAV M-5216.5
     ====================================================================== */

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

  :root {
    --brand-logo: url("data:image/png;base64,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");
    --navy-900: #0a1f3d;
    --navy-800: #142d52;
    --navy-700: #1e4170;
    --navy-600: #2c5891;
    --navy-100: #e6edf6;
    --navy-50:  #f3f6fa;
    --gold-600: #b8860b;
    --gold-500: #d4af37;
    --gold-400: #e6c84e;
    --gold-100: #faf3d8;
    --red-700:  #8b0e1c;
    --red-600:  #a8131f;
    --red-500:  #c1272d;
    --cream:    #faf8f3;
    --paper:    #ffffff;
    --ink-900:  #0e1115;
    --ink-700:  #2c2c2c;
    --ink-500:  #595959;
    --ink-400:  #8a8a8a;
    --ink-300:  #b8b8b8;
    --ink-200:  #d8d8d8;
    --ink-100:  #ececec;
    --ink-50:   #f6f6f6;
    --green-500: #2d9c5a;
    --green-100: #dff5e7;
    --amber-500: #d4861a;
    --amber-100: #fce9c9;
    --shadow-sm: 0 1px 2px rgba(10,31,61,.06), 0 1px 1px rgba(10,31,61,.04);
    --shadow-md: 0 4px 16px rgba(10,31,61,.08), 0 1px 3px rgba(10,31,61,.06);
    --shadow-lg: 0 12px 32px rgba(10,31,61,.12), 0 4px 12px rgba(10,31,61,.08);
    --radius-sm: 6px;
    --radius:    10px;
    --radius-lg: 14px;
    --transition: 180ms cubic-bezier(.4,0,.2,1);
  }

  html, body {
    margin: 0; padding: 0;
    background: linear-gradient(135deg, var(--navy-50) 0%, var(--cream) 100%);
    color: var(--ink-900);
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text",
                 "Inter", "Helvetica Neue", Arial, sans-serif;
    font-size: 15px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    min-height: 100vh;
  }

  /* ----- App shell ----- */
  .app {
    display: grid;
    grid-template-columns: 280px 1fr;
    grid-template-rows: 64px 1fr;
    grid-template-areas:
      "header header"
      "sidebar main";
    min-height: 100vh;
  }

  /* ============================================================
     SPLASH SCREEN (Lab Toolkit / Travel Tracker pattern)
     ============================================================ */
  .splash-screen {
    position: fixed; inset: 0;
    background: #0a0e1a;
    z-index: 9999;
    display: flex; align-items: center; justify-content: center;
    transition: opacity 0.5s ease;
    overflow: hidden;
  }
  .splash-screen.fade-out { opacity: 0; pointer-events: none; }
  .splash-scanlines {
    position: absolute; inset: 0;
    background: repeating-linear-gradient(0deg, rgba(255,255,255,0.015) 0 1px, transparent 1px 3px);
    pointer-events: none;
  }
  .splash-content { display: flex; flex-direction: column; align-items: center; gap: 26px; }
  /* Splash brand mark: render the inline logo at its native appearance
     (image already has its own gold-bordered frame), sized large for the
     centered splash. No navy tile, no extra ring - just the logo. */
  .splash-brand-mark {
    width: 160px; height: 160px;
    background-image: var(--brand-logo);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    animation: brandFade 1.8s ease-in-out infinite;
  }
  @keyframes brandFade { 0%,100% { opacity: 1; } 50% { opacity: 0.78; } }
  .splash-text { text-align: center; letter-spacing: 0.12em; }
  .splash-subtitle {
    font-size: 0.75rem; font-weight: 400;
    color: rgba(255,255,255,0.6);
    letter-spacing: 0.15em; text-transform: uppercase;
  }
  .splash-classify {
    margin-top: 18px; padding: 5px 14px;
    font-size: 0.65rem; font-weight: 700;
    letter-spacing: 0.25em; text-transform: uppercase;
    color: #4ade80;
    background: rgba(74,222,128,0.12);
    border: 1px solid rgba(74,222,128,0.55);
    display: inline-block;
  }
  .splash-loader { width: 220px; height: 2px; background: rgba(255,255,255,0.1); overflow: hidden; }
  .splash-loader-bar { width: 30%; height: 100%; background: var(--navy-700); animation: loaderSlide 1.4s ease-in-out infinite; }
  @keyframes loaderSlide { 0% { transform: translateX(-100%); } 100% { transform: translateX(370%); } }
  .splash-status { font-size: 0.65rem; letter-spacing: 0.25em; color: rgba(255,255,255,0.5); text-transform: uppercase; }
  .splash-blink { animation: blink 1s infinite; }
  @keyframes blink { 50% { opacity: 0; } }
  .splash-credit { position: absolute; bottom: 30px; right: 30px; }
  .splash-credit-stack { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; line-height: 1.2; }
  .splash-credit-name {
    font-size: 0.6rem; font-weight: 700;
    letter-spacing: 0.25em; color: rgba(255,255,255,0.45);
    text-transform: uppercase;
  }

  /* ============================================================
     CLASSIFICATION BANNER (Top + Bottom brackets per DoDM 5200.48
     and the U.S. government classification color standard codified
     in CSS by Astro UXDS / Air Force CDM Open Source Design System
     - the same standard used by DoD UI applications):
       Unclassified  = #007A33  (green;     white text)
       CUI           = #502B85  (purple;    white text) - DoDI 5200.48
       FOUO (legacy) = #502B85  (purple;    white text) - deprecated 6 Mar 2020
       Confidential  = #0033A0  (deep blue; white text)
       Secret        = #C8102E  (red;       white text)
       Top Secret    = #FF8C00  (orange;    BLACK text per contrast rules)
       TS//SCI       = #FCE83A  (yellow;    BLACK text)
     Format per ISOO marking handbook + 32 CFR 2001.22:
       Bold, centered, ALL CAPS, on every page (top AND bottom).
     ============================================================ */
  .ui-classification-banner {
    position: sticky;
    text-align: center;
    font-size: 12px; font-weight: 700;
    letter-spacing: 0.05em;        /* tight; DoD banners are not stretched */
    padding: 4px 12px;
    text-transform: uppercase;
    color: #fff;
    z-index: 100;
    box-shadow: 0 1px 3px rgba(0,0,0,0.15);
    line-height: 1.3;
  }
  #ui-classification-top    { top: 0; }
  #ui-classification-bottom { bottom: 0; margin-top: auto; }
  .ui-cls-unclass     { background: #007A33; color: #fff; }
  .ui-cls-cui         { background: #502B85; color: #fff; }
  .ui-cls-fouo        { background: #502B85; color: #fff; }
  .ui-cls-confidential{ background: #0033A0; color: #fff; }
  .ui-cls-secret      { background: #C8102E; color: #fff; }
  .ui-cls-top_secret  { background: #FF8C00; color: #000; }
  .ui-cls-ts_sci      { background: #FCE83A; color: #000; }

  /* ============================================================
     APP FOOTER (Lab Toolkit pattern - sticky, neutral surface)
     ============================================================ */
  .app-footer {
    background: #0a0e1a;
    color: rgba(255,255,255,0.55);
  }
  .footer-copyright {
    display: flex; align-items: center; justify-content: center;
    flex-wrap: wrap; gap: 10px;
    padding: 10px 28px;
    font-size: 11px;
    letter-spacing: 0.04em;
  }
  .footer-brand { font-weight: 700; letter-spacing: 0.04em; color: rgba(255,255,255,0.75); }
  .footer-sep { color: rgba(255,255,255,0.3); }
  .footer-version { color: rgba(255,255,255,0.55); }

  /* ----- Header ----- */
  header.appbar {
    grid-area: header;
    background: linear-gradient(90deg, var(--navy-900) 0%, var(--navy-700) 100%);
    color: white;
    display: grid;
    grid-template-columns: 1fr auto 1fr;   /* brand | context | actions */
    align-items: center;
    padding: 0 24px;
    gap: 24px;
    box-shadow: var(--shadow-md);
    border-bottom: 1px solid rgba(255,255,255,0.08);
    position: relative;
    z-index: 10;
    height: 64px;
  }
  .brand {
    display: flex; align-items: center; gap: 12px;
    justify-self: start;
  }
  .brand-mark {
    width: 36px; height: 36px;
    border-radius: var(--radius-sm);
    background-color: var(--navy-900);
    background-image: var(--brand-logo);
    background-size: cover;
    background-position: center;
    box-shadow: 0 0 0 3px rgba(212,175,55,.18), 0 1px 3px rgba(0,0,0,0.2);
    flex-shrink: 0;
  }
  .brand-name {
    font-weight: 700; font-size: 17px; line-height: 1.2;
    letter-spacing: -0.01em;
  }
  .brand-sub {
    font-size: 11px; color: rgba(255,255,255,.7);
    letter-spacing: 0.04em; text-transform: uppercase;
  }

  /* ----- Header center: step-context badge ----- */
  /* Shows the user's current location in the 8-step wizard at a glance.
     Subtle pill-shaped badge with backdrop, hover-elevatable on click to
     pop the step list. Hidden on narrow viewports (<1100px) to avoid
     crowding. */
  .header-context {
    justify-self: center;
    display: flex; align-items: center; gap: 10px;
    padding: 6px 14px 6px 10px;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 999px;
    font-size: 13px;
    color: rgba(255,255,255,0.92);
    cursor: pointer;
    transition: all var(--transition);
    user-select: none;
  }
  .header-context:hover {
    background: rgba(255,255,255,0.14);
    border-color: rgba(255,255,255,0.22);
  }
  .header-context-num {
    display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px;
    background: var(--gold-500);
    color: var(--navy-900);
    border-radius: 50%;
    font-weight: 700; font-size: 12px;
  }
  .header-context-label {
    font-weight: 600;
  }
  .header-context-total {
    color: rgba(255,255,255,0.55);
    font-weight: 400;
  }
  @media (max-width: 1100px) {
    .header-context { display: none; }
    header.appbar { grid-template-columns: 1fr auto; }
  }

  /* ----- Header right zone: status + actions ----- */
  .header-actions { justify-self: end; display: flex; gap: 8px; align-items: center; }

  /* Save status indicator - shows "✓ Saved" with a subtle dot, transitions
     to "Saving…" briefly when state changes. Auto-fades back. */
  .header-save-status {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 10px;
    font-size: 12px;
    color: rgba(255,255,255,0.65);
    margin-right: 4px;
    transition: color var(--transition);
  }
  .header-save-status .save-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: #22c55e;   /* green when saved */
    box-shadow: 0 0 0 3px rgba(34,197,94,0.18);
    transition: all var(--transition);
  }
  .header-save-status.saving .save-dot {
    background: var(--gold-500);
    box-shadow: 0 0 0 3px rgba(212,175,55,0.25);
    animation: save-pulse 1s ease-in-out infinite;
  }
  @keyframes save-pulse {
    0%, 100% { box-shadow: 0 0 0 3px rgba(212,175,55,0.25); }
    50% { box-shadow: 0 0 0 6px rgba(212,175,55,0.10); }
  }
  @media (max-width: 900px) { .header-save-status { display: none; } }

  /* Vertical separator between save status and action buttons */
  .header-divider {
    width: 1px; height: 24px;
    background: rgba(255,255,255,0.15);
    margin: 0 4px;
  }
  @media (max-width: 900px) { .header-divider { display: none; } }

  /* ----- Header issues pill -----
     Compact diagnostics indicator. Two states:
       .ok   - green "Compliant" pill
       .warn - amber "N issues" pill
     Click toggles the dropdown panel below. */
  .header-issues {
    position: relative;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 0 12px;
    height: 36px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 13px;
    font-weight: 500;
    border: 1px solid rgba(255,255,255,0.15);
    background: rgba(255,255,255,0.08);
    color: white;
    transition: all var(--transition);
    white-space: nowrap;
    flex-shrink: 0;
  }
  .header-issues:hover {
    background: rgba(255,255,255,0.16);
    border-color: rgba(255,255,255,0.25);
    transform: translateY(-1px);
  }
  .header-issues .issues-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--green-500);
    box-shadow: 0 0 0 3px rgba(45,156,90,0.18);
  }
  .header-issues.warn .issues-dot {
    background: #f59e0b;
    box-shadow: 0 0 0 3px rgba(245,158,11,0.20);
    animation: issues-pulse 1.6s ease-in-out infinite;
  }
  @keyframes issues-pulse {
    0%, 100% { box-shadow: 0 0 0 3px rgba(245,158,11,0.20); }
    50%      { box-shadow: 0 0 0 6px rgba(245,158,11,0.10); }
  }

  /* Issues modal - listing each issue with a "Fix" jump button. The pill
     in the header opens this; uses the standard .modal-backdrop / .modal
     classes for consistency with other modals (templates, help, welcome).
     Wider than a dropdown (640px) so long issue messages don't get
     clipped or wrap awkwardly. */
  .issues-modal-list {
    overflow-y: auto;
    max-height: 60vh;
  }
  .issues-modal-empty {
    padding: 48px 24px;
    text-align: center;
    color: var(--ink-500);
    font-size: 14px;
  }
  .issues-modal-empty .check {
    display: block;
    font-size: 48px;
    color: var(--green-500);
    margin-bottom: 12px;
    line-height: 1;
  }
  .issues-modal-empty .empty-title {
    font-weight: 600;
    color: var(--ink-900);
    font-size: 15px;
    margin-bottom: 4px;
  }
  .issue-item {
    padding: 14px 20px;
    border-bottom: 1px solid var(--ink-100);
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 16px;
    align-items: center;
  }
  .issue-item:last-child { border-bottom: none; }
  .issue-item:hover { background: var(--ink-50); }
  .issue-item-text {
    color: var(--ink-800);
    font-size: 13.5px;
    line-height: 1.5;
    word-wrap: break-word;
    overflow-wrap: anywhere;
    min-width: 0;            /* lets the grid cell shrink so wrapping works */
  }
  .issue-item-text code {
    background: var(--ink-100);
    padding: 1px 5px;
    border-radius: 3px;
    font-size: 12px;
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
  }
  .issue-fix-btn {
    background: var(--navy-700);
    color: white;
    border: 0;
    border-radius: var(--radius-sm);
    padding: 6px 16px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    height: 32px;
    transition: background var(--transition);
  }
  .issue-fix-btn:hover { background: var(--navy-600); }

  /* ----- Welcome modal options -----
     Cards in the welcome modal: large clickable rows with an icon + title +
     subtitle. .primary highlights the "Continue saved work" option. */
  .welcome-option {
    display: flex; align-items: center; gap: 14px;
    padding: 14px;
    background: white;
    border: 1px solid var(--ink-200);
    border-radius: var(--radius);
    cursor: pointer;
    text-align: left;
    transition: all var(--transition);
    font-family: inherit;
    width: 100%;
    color: var(--ink-900);
  }
  .welcome-option:hover {
    background: var(--ink-50);
    border-color: var(--navy-200);
    transform: translateY(-1px);
    box-shadow: var(--shadow-sm);
  }
  .welcome-option.primary {
    background: var(--navy-50);
    border-color: var(--navy-600);
  }
  .welcome-option.primary:hover {
    background: var(--navy-100);
  }
  .welcome-option-icon {
    width: 36px; height: 36px;
    border-radius: var(--radius-sm);
    background: var(--navy-700);
    color: white;
    display: flex; align-items: center; justify-content: center;
    font-size: 16px; font-weight: 700;
    flex-shrink: 0;
  }
  .welcome-option.primary .welcome-option-icon {
    background: var(--gold-500);
    color: var(--navy-900);
  }
  .welcome-option-body {
    display: flex; flex-direction: column; gap: 2px;
    flex: 1; min-width: 0;
  }
  .welcome-option-title {
    font-weight: 600; font-size: 14px;
    color: var(--ink-900);
  }
  .welcome-option-sub {
    font-size: 12px; color: var(--ink-500);
  }

  /* Field-highlight animation - pulses an amber outline around a field for
     ~3s after the user clicks "Fix" on an issue. Helps the user spot the
     specific input that needs attention. */
  .field-highlight {
    outline: 2px solid #f59e0b !important;
    outline-offset: 3px;
    border-radius: var(--radius-sm);
    animation: field-pulse 1.5s ease-in-out 2;
  }
  @keyframes field-pulse {
    0%, 100% { box-shadow: 0 0 0 4px rgba(245,158,11,0.25); }
    50%      { box-shadow: 0 0 0 12px rgba(245,158,11,0.05); }
  }

  .header-action {
    background: rgba(255,255,255,.08);
    color: white;
    border: 1px solid rgba(255,255,255,.15);
    padding: 0 14px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 13px;
    font-family: inherit;
    font-weight: 500;
    display: inline-flex; align-items: center; gap: 6px;
    transition: all var(--transition);
    height: 36px;
    white-space: nowrap;        /* keep label on one line */
    flex-shrink: 0;             /* don't squash when zone is tight */
    line-height: 1;
  }
  .header-action:hover {
    background: rgba(255,255,255,.16);
    border-color: rgba(255,255,255,.25);
    transform: translateY(-1px);
  }
  /* Icon-only button variant (Help / settings). Square, no text. */
  .header-action.icon-only {
    padding: 0;
    width: 36px;
    justify-content: center;
    font-size: 16px;
  }
  .header-action.primary {
    background: var(--gold-500); color: var(--navy-900);
    border-color: var(--gold-400);
    font-weight: 600;
    box-shadow: 0 1px 0 rgba(212,175,55,0.4);
  }
  .header-action.primary:hover {
    background: var(--gold-400);
  }
  /* Keyboard-shortcut hint badge inside a button. Subtle, monospaced. */
  .kbd {
    display: inline-flex; align-items: center;
    padding: 1px 6px;
    margin-left: 4px;
    font-size: 11px;
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    background: rgba(0,0,0,0.18);
    border-radius: 4px;
    border: 1px solid rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.7);
  }

  /* ----- Sidebar / Step nav ----- */
  aside.sidebar {
    grid-area: sidebar;
    background: var(--paper);
    border-right: 1px solid var(--ink-100);
    padding: 20px 0;
    overflow-y: auto;
  }
  .step-progress {
    padding: 0 20px 16px;
    border-bottom: 1px solid var(--ink-100);
    margin-bottom: 12px;
  }
  .progress-label {
    font-size: 11px; text-transform: uppercase;
    letter-spacing: 0.06em; color: var(--ink-500);
    margin-bottom: 8px; font-weight: 600;
  }
  .progress-bar {
    height: 6px; background: var(--ink-100);
    border-radius: 3px; overflow: hidden;
  }
  .progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--navy-600), var(--gold-500));
    border-radius: 3px;
    transition: width var(--transition);
  }
  .progress-count {
    font-size: 13px; color: var(--ink-700);
    margin-top: 6px; font-weight: 500;
  }

  .step-nav { padding: 0 12px; }
  .step-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    margin-bottom: 4px;
    transition: all var(--transition);
    border: 1px solid transparent;
  }
  .step-item:hover {
    background: var(--navy-50);
  }
  .step-item.active {
    background: var(--navy-50);
    border-color: var(--navy-100);
    box-shadow: var(--shadow-sm);
  }
  .step-num {
    width: 28px; height: 28px;
    border-radius: 50%;
    background: var(--ink-100);
    color: var(--ink-500);
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 12px;
    flex-shrink: 0;
    transition: all var(--transition);
  }
  .step-item.active .step-num {
    background: var(--navy-700);
    color: white;
  }
  .step-item.completed .step-num {
    background: var(--green-500);
    color: white;
  }
  .step-item.completed .step-num::before {
    content: "✓";
  }
  /* Steps with unresolved validation issues - amber circle with "!" icon.
     Takes precedence over .completed (a step with issues is never "done"
     even if the user has navigated past it). */
  .step-item.warn .step-num {
    background: #f59e0b;
    color: white;
  }
  .step-item.warn .step-num::before {
    content: "!";
    font-weight: 800;
  }
  .step-item.warn.active .step-num {
    background: var(--navy-700);   /* active wins for the focused step */
  }
  .step-item.warn.active .step-num::before {
    content: "";   /* show the step number on the active step instead */
  }
  /* Issue count badge under the step title (e.g. "3 issues") */
  .step-issues-badge {
    display: inline-flex; align-items: center; gap: 4px;
    margin-top: 2px;
    padding: 1px 6px;
    background: rgba(245,158,11,0.12);
    color: #92400e;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 600;
    line-height: 1.4;
  }
  .step-text {
    flex: 1;
    min-width: 0;
  }
  .step-title {
    font-weight: 600; font-size: 14px;
    color: var(--ink-900);
    line-height: 1.2;
  }
  .step-item:not(.active) .step-title { color: var(--ink-700); }
  .step-desc {
    font-size: 11px; color: var(--ink-500);
    margin-top: 1px;
  }

  /* ----- Main content area ----- */
  main.content {
    grid-area: main;
    padding: 32px;
    background: var(--cream);
    /* IMPORTANT: do NOT set `overflow-y: auto` here - that creates a scroll
       context which breaks `position: sticky` on the preview pane (sticky's
       nearest scrolling ancestor would be main, which doesn't actually scroll
       when its content fits the row, so sticky never triggers as the WINDOW
       scrolls). Letting the window scroll the body keeps sticky working.
       Two-column layout when room: step card on left, sticky preview on right.
       align-items defaults to `stretch` so the right grid cell extends the full
       row height. On narrow viewports the preview drops below the form. */
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 380px);
    gap: 24px;
  }
  @media (max-width: 1280px) {
    main.content { grid-template-columns: 1fr; }
    .preview-pane { position: static !important; max-height: none !important; }
  }
  /* The grid cell - stretches to row height so sticky has full scroll range */
  .preview-column { min-height: 100%; }
  /* The right-side live-preview pane - sticky so it stays in view while the
     user scrolls the wizard form on the left. Shrunk to ≈45% of an 8.5"x11"
     page so it fits at 380px wide while keeping aspect ratio. */
  .preview-pane {
    position: sticky;
    top: 0;
    background: var(--paper);
    border: 1px solid var(--ink-200);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: 16px;
    max-height: calc(100vh - 96px);
    overflow-y: auto;
    /* Prevent the pane from being stretched by the parent grid cell - the
       cell stretches (so sticky has full scroll range) but the pane stays
       at its natural / max-height. */
    align-self: start;
  }
  .preview-pane-title {
    font-size: 12px;
    font-weight: 700;
    color: var(--ink-700);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0 0 8px;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .preview-pane-title .live-dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: #10b981;
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.6);
    animation: live-pulse 2s infinite;
  }
  @keyframes live-pulse {
    0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.6); }
    70% { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
    100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
  }
  .preview-pane-meta {
    font-size: 10px; color: var(--ink-500);
    margin-bottom: 10px;
  }
  /* Live preview iframe - gives us a fully isolated layout context so the
     letter-page (8.5×11" with Courier text at 10pt) can render at its natural
     size and we can `transform: scale()` the iframe element to fit the pane.
     Without an iframe, applying transform: scale to a 816px-wide div inside a
     348px overflow:hidden parent produced broken layout (text rendered one
     character per line). The iframe avoids that by isolating the inner DOM. */
  .preview-page-wrapper {
    overflow: hidden;
    position: relative;
  }
  .preview-page-wrapper iframe {
    border: 1px solid var(--ink-300);
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    background: white;
    transform-origin: top left;
    display: block;
    /* iframe width set to 816px (8.5in @96dpi) via inline style; scale applied via JS */
  }

  .step-card {
    background: var(--paper);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    padding: 36px 40px;
    max-width: 920px;
    margin: 0 auto 24px;
    animation: slideIn 280ms cubic-bezier(.2,.7,.3,1);
  }
  @keyframes slideIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  .step-header {
    border-bottom: 1px solid var(--ink-100);
    padding-bottom: 20px; margin-bottom: 28px;
  }
  .step-eyebrow {
    color: var(--gold-600); font-size: 12px;
    font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.08em; margin-bottom: 6px;
  }
  .step-heading {
    font-size: 26px; font-weight: 700;
    color: var(--ink-900); margin: 0 0 8px;
    letter-spacing: -0.02em;
  }
  .step-subhead {
    color: var(--ink-500); font-size: 15px;
  }

  /* ----- Form fields ----- */
  .field-group { margin-bottom: 20px; }
  .field-grid { display: grid; gap: 16px; grid-template-columns: 1fr 1fr; }
  .field-grid.three { grid-template-columns: 1fr 1fr 1fr; }
  @media (max-width: 720px) {
    .field-grid, .field-grid.three { grid-template-columns: 1fr; }
  }
  .field {
    display: flex; flex-direction: column; gap: 6px;
  }
  .field-label {
    font-size: 12px; font-weight: 600;
    color: var(--ink-700);
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }
  .field-input, .field-select, .field-textarea {
    border: 1px solid var(--ink-200);
    border-radius: var(--radius-sm);
    padding: 11px 14px;
    font-family: inherit;
    font-size: 14px;
    background: white;
    color: var(--ink-900);
    transition: all var(--transition);
    outline: none;
  }
  .field-input:hover, .field-textarea:hover, .field-select:hover {
    border-color: var(--ink-300);
  }
  .field-input:focus, .field-textarea:focus, .field-select:focus {
    border-color: var(--navy-600);
    box-shadow: 0 0 0 3px rgba(44,88,145,.15);
  }
  .field-textarea { resize: vertical; min-height: 60px; line-height: 1.5; }
  .field-help {
    font-size: 12px; color: var(--ink-500);
  }

  /* ----- SSIC fuzzy picker ----- */
  .ssic-wrap { position: relative; }
  .ssic-dropdown {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 50;
    background: white; border: 1px solid var(--ink-200);
    border-radius: var(--radius); margin-top: 4px;
    box-shadow: var(--shadow-lg);
    max-height: 280px; overflow-y: auto;
    display: none;
  }
  .ssic-dropdown.show { display: block; }
  .ssic-item {
    padding: 10px 14px; cursor: pointer; font-size: 13px;
    display: flex; gap: 12px; align-items: flex-start;
    transition: background var(--transition);
    border-bottom: 1px solid var(--ink-50);
  }
  .ssic-item:last-child { border-bottom: none; }
  .ssic-item:hover, .ssic-item.active {
    background: var(--navy-50);
  }
  .ssic-item .code {
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    font-weight: 700;
    color: var(--navy-700);
    background: var(--navy-50);
    padding: 2px 8px;
    border-radius: 4px;
    flex-shrink: 0;
    font-size: 12px;
  }
  .ssic-item .desc { flex: 1; color: var(--ink-700); }

  /* ----- Caveat fuzzy picker (CUI categories, dissemination controls,
     classified caveats, SCI compartments). Same UX as the SSIC picker:
     dropdown anchored under the input, scored fuzzy results, click-or-
     mouse-down to commit. ----- */
  .caveat-wrap { position: relative; }
  .caveat-dropdown {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 50;
    background: white; border: 1px solid var(--ink-200);
    border-radius: var(--radius); margin-top: 4px;
    box-shadow: var(--shadow-lg);
    max-height: 320px; overflow-y: auto;
    display: none;
  }
  .caveat-dropdown.show { display: block; }
  .caveat-item {
    padding: 10px 14px; cursor: pointer; font-size: 13px;
    display: flex; gap: 12px; align-items: flex-start;
    transition: background var(--transition);
    border-bottom: 1px solid var(--ink-50);
  }
  .caveat-item:last-child { border-bottom: none; }
  .caveat-item:hover, .caveat-item.active {
    background: var(--navy-50);
  }
  /* Code chip mirrors the on-document banner color so the user
     recognizes the family (CUI = purple, classified caveats = gray,
     SCI = orange). The .kind- modifier picks the right tint. */
  .caveat-item .code {
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    font-weight: 800;
    color: white;
    padding: 3px 8px;
    border-radius: 4px;
    flex-shrink: 0;
    font-size: 11px;
    letter-spacing: 0.4px;
    min-width: 80px;
    text-align: center;
  }
  .caveat-item .code.kind-cuiCategory { background: #502B85; }
  .caveat-item .code.kind-disseminationControl { background: var(--navy-700); }
  .caveat-item .code.kind-classifiedCaveat { background: #6b7280; }
  .caveat-item .code.kind-sciCompartment { background: #FF8C00; color: #111; }
  .caveat-item .body { flex: 1; min-width: 0; }
  .caveat-item .name { font-weight: 600; color: var(--ink-900); }
  .caveat-item .summary { color: var(--ink-700); margin-top: 2px; line-height: 1.4; }
  .caveat-item .group {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--ink-500);
    margin-top: 4px;
    font-weight: 600;
  }

  /* ----- Buttons ----- */
  .btn {
    border: none; border-radius: var(--radius-sm);
    padding: 11px 22px; cursor: pointer; font-family: inherit;
    font-size: 14px; font-weight: 600;
    transition: all var(--transition);
    display: inline-flex; align-items: center; gap: 8px;
    text-decoration: none;
  }
  .btn:disabled { opacity: .5; cursor: not-allowed; }
  .btn-primary {
    background: var(--navy-700); color: white;
    box-shadow: var(--shadow-sm);
  }
  .btn-primary:hover:not(:disabled) {
    background: var(--navy-800); transform: translateY(-1px);
    box-shadow: var(--shadow-md);
  }
  .btn-secondary {
    background: white; color: var(--navy-700);
    border: 1px solid var(--ink-200);
  }
  .btn-secondary:hover:not(:disabled) {
    border-color: var(--navy-600); background: var(--navy-50);
  }
  .btn-ghost {
    background: transparent; color: var(--ink-700);
  }
  .btn-ghost:hover:not(:disabled) {
    background: var(--ink-50); color: var(--ink-900);
  }
  .btn-danger {
    background: white; color: var(--red-600);
    border: 1px solid var(--ink-200);
  }
  .btn-danger:hover:not(:disabled) {
    background: var(--red-500); color: white; border-color: var(--red-500);
  }
  .btn-icon {
    padding: 8px;
    width: 36px; height: 36px;
    justify-content: center;
    border-radius: var(--radius-sm);
    background: white;
    color: var(--ink-500);
    border: 1px solid var(--ink-200);
    cursor: pointer;
    font-size: 14px;
    transition: all var(--transition);
  }
  .btn-icon:hover {
    background: var(--ink-50); color: var(--ink-900);
    border-color: var(--ink-300);
  }
  .btn-icon.danger:hover {
    color: var(--red-600); border-color: var(--red-500);
    background: white;
  }

  /* ----- Step navigation footer ----- */
  .step-footer {
    display: flex; align-items: center;
    margin-top: 32px; padding-top: 24px;
    border-top: 1px solid var(--ink-100);
    gap: 12px;
  }
  .step-footer .spacer { flex: 1; }

  /* ----- Seal upload ----- */
  .seal-uploader {
    border: 2px dashed var(--ink-200);
    border-radius: var(--radius);
    padding: 24px;
    text-align: center;
    background: var(--navy-50);
    transition: all var(--transition);
    cursor: pointer;
    position: relative;
  }
  .seal-uploader:hover {
    border-color: var(--navy-600);
    background: var(--navy-100);
  }
  .seal-uploader.has-image {
    background: white;
    border-style: solid;
    padding: 16px;
  }
  .seal-uploader img {
    max-width: 140px;
    max-height: 140px;
    border-radius: var(--radius-sm);
    object-fit: contain;
  }
  .seal-uploader-text {
    font-size: 13px; color: var(--ink-700);
    margin-top: 12px;
  }
  .seal-uploader-hint {
    font-size: 12px; color: var(--ink-500);
    margin-top: 4px;
  }
  .seal-icon {
    font-size: 48px;
    color: var(--navy-600);
    opacity: .5;
  }

  /* ----- Templates ----- */
  .template-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 12px;
    margin-bottom: 12px;
  }
  .template-card {
    border: 1px solid var(--ink-200);
    border-radius: var(--radius);
    padding: 16px;
    cursor: pointer;
    transition: all var(--transition);
    background: white;
    position: relative;
  }
  .template-card:hover {
    border-color: var(--navy-600);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
  }
  .template-card.blank {
    border-style: dashed;
    background: var(--navy-50);
  }
  .template-card-name {
    font-weight: 600; font-size: 14px;
    color: var(--ink-900);
    margin-bottom: 4px;
  }
  .template-card-meta {
    font-size: 12px; color: var(--ink-500);
  }
  .template-card-actions {
    margin-top: 12px; display: flex; gap: 6px;
  }

  /* ----- Refs / Encls / Distro lists ----- */
  .list-rows {
    display: flex; flex-direction: column; gap: 8px;
  }
  .list-row {
    display: grid;
    grid-template-columns: 48px 1fr 36px 36px;
    gap: 8px; align-items: center;
  }
  .list-row .label {
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    font-weight: 700; font-size: 13px;
    color: var(--navy-700);
    background: var(--navy-50);
    padding: 8px 0;
    border-radius: var(--radius-sm);
    text-align: center;
  }

  /* ----- Body editor ----- */
  .body-rows {
    display: flex; flex-direction: column; gap: 6px;
  }
  .body-row {
    display: grid;
    grid-template-columns: 64px auto 1fr auto;
    gap: 8px;
    align-items: flex-start;
    padding: 6px;
    border-radius: var(--radius-sm);
    transition: background var(--transition);
  }
  .body-row:hover {
    background: var(--navy-50);
  }
  .body-row .marker {
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    font-weight: 700; font-size: 13px;
    color: var(--navy-700);
    padding-top: 11px;
    text-align: right;
  }
  .body-row .level-badges {
    display: flex; gap: 2px;
    align-items: center;
  }
  .body-row .level-badge {
    font-size: 10px; padding: 4px 6px;
    border-radius: 3px; cursor: pointer;
    border: 1px solid var(--ink-200);
    background: white;
    color: var(--ink-500);
    font-weight: 600;
    line-height: 1;
    transition: all var(--transition);
  }
  .body-row .level-badge:hover {
    background: var(--navy-50); color: var(--navy-700);
  }
  .body-row .level-badge.active {
    background: var(--navy-700);
    color: white;
    border-color: var(--navy-700);
  }
  .body-row textarea {
    border: 1px solid var(--ink-200);
    border-radius: var(--radius-sm);
    padding: 9px 12px;
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    font-size: 13px; line-height: 1.45;
    min-height: 38px;
    resize: vertical;
    transition: border var(--transition), box-shadow var(--transition);
  }
  .body-row textarea:focus {
    border-color: var(--navy-600);
    box-shadow: 0 0 0 3px rgba(44,88,145,.12);
    outline: none;
  }
  .body-row textarea.heading {
    font-weight: 700;
    text-transform: uppercase;
    background: var(--gold-100);
    border-color: var(--gold-500);
  }
  .body-row .row-actions {
    display: flex; gap: 4px;
  }

  .body-toolbar {
    display: flex; gap: 8px; flex-wrap: wrap;
    margin-top: 16px;
    padding: 12px;
    background: var(--navy-50);
    border-radius: var(--radius);
    border: 1px solid var(--navy-100);
  }

  .info-banner {
    background: linear-gradient(135deg, var(--gold-100), var(--cream));
    border: 1px solid var(--gold-500);
    border-left-width: 4px;
    border-radius: var(--radius-sm);
    padding: 12px 16px;
    margin-bottom: 20px;
    font-size: 13px;
    color: var(--ink-700);
  }
  .info-banner strong { color: var(--ink-900); }

  /* ----- Validation card ----- */
  .validation-card {
    background: white;
    border: 1px solid var(--ink-200);
    border-radius: var(--radius);
    padding: 20px;
    margin-bottom: 24px;
  }
  .validation-card.pass {
    border-color: var(--green-500);
    background: linear-gradient(135deg, white, var(--green-100));
  }
  .validation-card.fail {
    border-color: var(--amber-500);
    background: linear-gradient(135deg, white, var(--amber-100));
  }
  .validation-header {
    display: flex; align-items: center; gap: 10px;
    margin-bottom: 12px;
    font-weight: 700;
  }
  .validation-pill {
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
  }
  .validation-pill.pass {
    background: var(--green-500); color: white;
  }
  .validation-pill.fail {
    background: var(--amber-500); color: white;
  }
  .validation-list { list-style: none; padding: 0; margin: 0; }
  .validation-list li {
    padding: 6px 0; font-size: 13px;
    display: flex; gap: 8px; align-items: flex-start;
  }
  .validation-list li .check {
    font-weight: 700; flex-shrink: 0;
  }
  .validation-list li.ok .check { color: var(--green-500); }
  .validation-list li.err .check { color: var(--amber-500); }

  /* ----- Preview ----- */
  .preview-actions {
    display: flex; gap: 8px;
    justify-content: flex-end;
    margin-bottom: 16px;
    flex-wrap: wrap;
  }

  /* ----- Step 8 export buttons (DOCX + PDF only) ----- */
  .export-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 20px;
  }
  @media (max-width: 720px) {
    .export-actions { grid-template-columns: 1fr; }
  }
  .export-btn {
    display: flex; align-items: center; gap: 14px;
    padding: 16px 18px;
    background: white;
    border: 1.5px solid var(--ink-200);
    border-radius: var(--radius);
    cursor: pointer;
    transition: all var(--transition);
    text-align: left;
    font: inherit;
    color: var(--ink-900);
  }
  .export-btn:hover {
    border-color: var(--navy-600);
    box-shadow: var(--shadow-sm);
    transform: translateY(-1px);
  }
  .export-btn:active {
    transform: translateY(0);
  }
  .export-btn-primary {
    border-color: var(--navy-700);
    background: linear-gradient(180deg, var(--navy-700) 0%, var(--navy-900) 100%);
    color: white;
  }
  .export-btn-primary:hover {
    border-color: var(--navy-900);
    background: linear-gradient(180deg, var(--navy-800) 0%, var(--navy-900) 100%);
  }
  .export-btn-icon {
    font-size: 28px;
    line-height: 1;
    flex-shrink: 0;
  }
  .export-btn-body {
    display: flex; flex-direction: column; gap: 2px;
    min-width: 0;
  }
  .export-btn-title {
    font-size: 16px; font-weight: 700;
    line-height: 1.2;
  }
  .export-btn-sub {
    font-size: 12px;
    opacity: 0.85;
    line-height: 1.3;
  }
  .export-btn-primary .export-btn-sub {
    color: rgba(255, 255, 255, 0.85);
  }
  .export-btn:not(.export-btn-primary) .export-btn-sub {
    color: var(--ink-500);
  }
  .preview-page {
    background: white;
    width: 8.5in;
    max-width: 100%;
    margin: 0 auto;
    padding: 1in;
    box-shadow: var(--shadow-lg);
    border-radius: 4px;
    color: black;
    font-family: 'Courier New', Courier, monospace;
    font-size: 10pt;
    line-height: 1.0;
    min-height: 11in;
    position: relative;
    overflow: hidden;
  }
  .preview-letterhead {
    text-align: center;
    /* No bottom margin: spacing between letterhead and SSIC is controlled
       inside buildBodyHtml via a single leading blank line, matching the
       .docx header1.xml structure (5 letterhead paragraphs → 1 empty
       spacer paragraph → 3 SSIC paragraphs). Adding margin here would
       double-space the gap. */
    margin-bottom: 0;
    position: relative;
  }
  .preview-letterhead .seal {
    position: absolute;
    left: 0; top: 0;
    width: 1in; height: 1in;
  }
  .preview-letterhead .seal img {
    width: 100%; height: 100%; object-fit: contain;
  }
  /* Live preview letterhead - proportions mirror the .docx output:
     line 1 = 12pt bold (sz=24 in OOXML), line 2 = 10pt bold (sz=20),
     lines 3-5 = 8pt regular (sz=16). Per SECNAV §2-2.20 the typeface is
     Courier New 10-12pt; matching that here keeps the live preview
     visually identical to what Word will produce. */
  .preview-letterhead-text {
    font-family: 'Courier New', monospace;
    font-weight: 700;
    line-height: 1.15;
  }
  /* SECNAV M-5216.5 CH-1 Appendix C §2.a (Computer Generated Letterhead - Font):
     "10 point bold for the DEPARTMENT OF THE NAVY line and 8 point for the address lines" */
  .preview-letterhead-text .lh-line1 { font-size: 10pt; font-weight: 700; }
  .preview-letterhead-text .lh-line2 { font-size: 8pt;  font-weight: 700; }
  .preview-letterhead-text .small {
    font-weight: 400; font-size: 8pt;
  }
  .preview-ssic-block {
    position: absolute;
    right: 1in; top: 1in;
    text-align: right;
    font-family: 'Courier New', monospace;
    font-size: 10pt;
    line-height: 1.0;
    color: black;
  }
  .preview-body {
    white-space: pre-wrap;
    font-family: 'Courier New', monospace;
    font-size: 10pt;
    line-height: 1.0;
    color: black;
  }

  /* ----- Templates dialog ----- */
  .modal-backdrop {
    position: fixed; inset: 0;
    background: rgba(10,31,61,.5);
    display: none;
    align-items: center; justify-content: center;
    z-index: 100;
    padding: 24px;
    backdrop-filter: blur(4px);
  }
  .modal-backdrop.show { display: flex; }
  .modal {
    background: white;
    border-radius: var(--radius-lg);
    padding: 28px 32px;
    max-width: 680px;
    width: 100%;
    max-height: 80vh;
    overflow-y: auto;
    box-shadow: var(--shadow-lg);
    animation: modalSlide 240ms cubic-bezier(.2,.7,.3,1);
  }
  @keyframes modalSlide {
    from { opacity: 0; transform: scale(.96) translateY(8px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
  }
  .modal-header {
    display: flex; align-items: center;
    margin-bottom: 16px;
  }
  .modal-title {
    font-size: 20px; font-weight: 700;
    color: var(--ink-900); margin: 0;
  }
  .modal-close {
    margin-left: auto;
    background: none; border: none;
    cursor: pointer; font-size: 22px;
    color: var(--ink-500);
    padding: 4px 10px;
    border-radius: var(--radius-sm);
  }
  .modal-close:hover {
    background: var(--ink-50);
    color: var(--ink-900);
  }

  /* ----- Toast ----- */
  .toast {
    position: fixed; bottom: 24px; right: 24px;
    background: var(--ink-900);
    color: white;
    padding: 12px 20px;
    border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
    font-size: 13px; font-weight: 500;
    z-index: 200;
    opacity: 0;
    transform: translateY(8px);
    transition: all var(--transition);
    pointer-events: none;
  }
  .toast.show {
    opacity: 1; transform: translateY(0);
  }


  /* ============================================================
     STEP 1 - LETTERHEAD: live preview, manual rule cards, toggles
     ============================================================ */

  /* Letterhead preview - renders an 8.5x11 page at 0.45 scale
     (1 inch = 45 px; full page = 382.5 x 495 px). Shows seal, lines 1-5,
     and SSIC block at exact manual-spec positions. */
  .lh-preview-frame {
    background: var(--ink-100);
    border-radius: var(--radius);
    padding: 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    margin: 0 0 20px;
    border: 1px solid var(--ink-200);
  }
  .lh-preview-frame-header {
    display: flex; align-items: center; gap: 10px;
    width: 100%; max-width: 760px;
    font-size: 11px; font-weight: 700;
    color: var(--ink-500);
    letter-spacing: 0.08em; text-transform: uppercase;
  }
  .lh-preview-frame-header .dot {
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--green-500);
    box-shadow: 0 0 0 3px var(--green-100);
  }
  .lh-preview-frame-header .meta {
    margin-left: auto; color: var(--ink-400);
    font-weight: 500; letter-spacing: normal; text-transform: none;
    font-size: 12px;
  }
  /* The page itself - proportional to 8.5x11 letter at 45px/inch.
     Actual on-screen size is 382.5 x 220 (top portion only). */
  .lh-preview-page {
    width: 382px; height: 495px;
    background: white;
    border: 1px solid var(--ink-300);
    box-shadow: var(--shadow-md);
    position: relative;
    font-family: 'Courier New', 'Menlo', monospace;
    overflow: hidden;
  }
  /* Margin guides - 1" margins at 45px/inch = 45px from each edge */
  .lh-preview-page .margin-guide {
    position: absolute;
    pointer-events: none;
    border: 1px dashed rgba(0, 47, 108, 0.18);
  }
  .lh-preview-page .margin-guide.top    { top: 45px;    left: 0;    right: 0;   border-width: 1px 0 0 0; }
  .lh-preview-page .margin-guide.bottom { bottom: 45px; left: 0;    right: 0;   border-width: 1px 0 0 0; }
  .lh-preview-page .margin-guide.left   { left: 45px;   top: 0;     bottom: 0;  border-width: 0 0 0 1px; }
  .lh-preview-page .margin-guide.right  { right: 45px;  top: 0;     bottom: 0;  border-width: 0 1px 0 0; }
  /* Seal - 1" diameter at 0.5" from top-left = 22.5x22.5 px at (22.5, 22.5)
     Manual: §2-2.12.b.(1), App C §1.b */
  .lh-preview-page .seal {
    position: absolute;
    left: 22px; top: 22px;
    width: 45px; height: 45px;
    object-fit: contain;
  }
  .lh-preview-page .seal-placeholder {
    position: absolute;
    left: 22px; top: 22px;
    width: 45px; height: 45px;
    border: 1.5px dashed var(--ink-300);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: var(--ink-400); font-size: 8px; text-align: center;
    line-height: 1.1; font-family: -apple-system, system-ui, sans-serif;
  }
  /* Letterhead text - centered between left+right margins, starts ~5/8" from top */
  .lh-preview-page .lh-text {
    position: absolute;
    left: 45px; right: 45px; top: 28px;
    text-align: center;
  }
  .lh-preview-page .lh-text .ln1 {
    font-weight: 700; font-size: 9px;     /* 10pt at 45px/inch ≈ 6.25 px; bumped to 9 for legibility */
    letter-spacing: 0.04em; line-height: 11px;
  }
  .lh-preview-page .lh-text .ln2 {
    font-weight: 700; font-size: 7px;     /* 8pt scaled */
    letter-spacing: 0.03em; line-height: 9px;
  }
  .lh-preview-page .lh-text .ln-addr {
    font-weight: 400; font-size: 7px;
    line-height: 9px;
  }
  /* SSIC block - col-(pad+1) to right margin, ~1.6" from top */
  .lh-preview-page .ssic-block {
    position: absolute;
    text-align: left;
    color: var(--ink-900);   /* SSIC always in black per §7-2.3 (only letterhead is colored) */
    font-size: 7px; line-height: 9px;
  }

  /* Manual-rule citation cards (above each form section) */
  .lh-rule-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 9px; margin: 0 4px 4px 0;
    background: var(--navy-50);
    border: 1px solid var(--navy-100);
    border-radius: 999px;
    font-size: 11px; font-weight: 600;
    color: var(--navy-700);
    font-family: 'SF Mono', 'Monaco', monospace;
    white-space: nowrap;
  }
  .lh-rule-pill::before {
    content: '§';
    font-weight: 800; opacity: 0.6;
  }
  .lh-rule-pill.app-c::before { content: 'App C §'; opacity: 0.6; font-size: 10px; }

  /* Section card for grouping related fields */
  .lh-section {
    background: white;
    border: 1px solid var(--ink-100);
    border-radius: var(--radius);
    padding: 18px 20px;
    margin-bottom: 14px;
    transition: border-color var(--transition);
  }
  .lh-section:hover { border-color: var(--ink-200); }
  .lh-section-header {
    display: flex; align-items: baseline; gap: 10px;
    margin-bottom: 4px;
  }
  .lh-section-title {
    font-size: 14px; font-weight: 700;
    color: var(--ink-900);
    margin: 0;
  }
  .lh-section-cite {
    font-size: 11px; color: var(--ink-500);
    font-family: 'SF Mono', 'Monaco', monospace;
  }
  .lh-section-quote {
    margin: 6px 0 14px;
    padding: 8px 12px;
    border-left: 3px solid var(--navy-600);
    background: var(--navy-50);
    font-size: 12px; line-height: 1.5;
    color: var(--ink-700);
    font-style: italic;
    border-radius: 0 4px 4px 0;
  }
  .lh-section-quote::before { content: '\201C'; font-weight: 700; color: var(--navy-600); margin-right: 2px; }
  .lh-section-quote::after  { content: '\201D'; font-weight: 700; color: var(--navy-600); margin-left: 2px; }

  /* Toggle button group (ink + service + classification) */
  /* Default: flex with wrap, so containers with many children wrap to a second
     row instead of overflowing the form card (e.g. 6 classification toggles).
     Flex 1 1 0 keeps 2-3 toggles stretching equally on existing groups while
     allowing 6+ toggles to wrap at narrow widths. min-width: 0 lets toggles
     shrink below their natural content width when needed. */
  .lh-toggle-group {
    display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px;
  }
  .lh-toggle {
    flex: 1 1 0;
    min-width: 0;
    display: flex; align-items: center; gap: 10px;
    padding: 10px 14px;
    border: 2px solid var(--ink-200);
    border-radius: var(--radius);
    background: white;
    cursor: pointer;
    transition: all var(--transition);
    user-select: none;
  }
  .lh-toggle:hover { border-color: var(--ink-300); background: var(--ink-50); }
  .lh-toggle.selected {
    border-color: var(--navy-600);
    background: var(--navy-50);
    box-shadow: var(--shadow-sm);
  }
  .lh-toggle.selected.is-black {
    border-color: var(--ink-900);
    background: var(--ink-50);
  }
  .lh-toggle input[type=radio] { margin: 0; cursor: pointer; }
  .lh-toggle .swatch {
    width: 16px; height: 16px; border-radius: 50%;
    border: 1px solid rgba(0,0,0,0.1);
  }
  .lh-toggle .label-main { font-weight: 600; font-size: 14px; color: var(--ink-900); }
  .lh-toggle .label-sub  { font-size: 12px; color: var(--ink-500); margin-left: auto; }

  /* Stacked variant - radio on the left, main label on top, sub label below.
     Used by groups with 3+ columns (e.g. the 6-option classification picker)
     where horizontal room is tight and the default inline (main + sub side-
     by-side) layout makes sub-labels wrap awkwardly mid-word. CSS Grid
     restructures the layout without needing an HTML wrapper around the
     two label spans. */
  .lh-toggle--stacked {
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto;
    align-items: center;
    column-gap: 10px;
    row-gap: 2px;
  }
  .lh-toggle--stacked input[type=radio] {
    grid-column: 1;
    grid-row: 1 / span 2;
    align-self: center;
  }
  .lh-toggle--stacked .label-main {
    grid-column: 2;
    grid-row: 1;
    line-height: 1.2;
  }
  .lh-toggle--stacked .label-sub {
    grid-column: 2;
    grid-row: 2;
    margin-left: 0;        /* override the default auto-push-right */
    line-height: 1.2;
  }

  /* Seal display (current seal preview + actions) */
  .lh-seal-card {
    display: flex; align-items: flex-start; gap: 18px;
    padding: 16px;
    background: var(--ink-50);
    border-radius: var(--radius);
    border: 1px solid var(--ink-100);
  }
  .lh-seal-card .seal-thumb {
    width: 96px; height: 96px;
    background: white;
    border: 1px solid var(--ink-200);
    border-radius: var(--radius-sm);
    display: flex; align-items: center; justify-content: center;
    overflow: hidden; flex-shrink: 0;
  }
  .lh-seal-card .seal-thumb img {
    max-width: 88px; max-height: 88px;
    object-fit: contain;
  }
  .lh-seal-card .seal-thumb.empty {
    color: var(--ink-300); font-size: 32px;
  }
  .lh-seal-card .seal-info { flex: 1; min-width: 0; }
  .lh-seal-card .seal-info-title {
    font-size: 14px; font-weight: 600; color: var(--ink-900);
    margin: 0 0 2px;
  }
  .lh-seal-card .seal-info-desc {
    font-size: 12px; color: var(--ink-500);
    margin: 0 0 10px;
  }
  .lh-seal-card .seal-actions {
    display: flex; gap: 6px; flex-wrap: wrap;
  }

  /* Locked line 1 display */
  .lh-line1-locked {
    display: flex; align-items: center; gap: 10px;
    padding: 12px 14px;
    background: var(--navy-50);
    border: 2px dashed var(--navy-100);
    border-radius: var(--radius-sm);
    font-family: 'Courier New', monospace;
    font-weight: 700;
    color: var(--navy-700);
    cursor: not-allowed; user-select: none;
  }
  .lh-line1-locked .lock-icon {
    font-size: 14px; opacity: 0.7;
  }
  .lh-line1-locked .lock-badge {
    margin-left: auto;
    font-size: 10px; font-weight: 600;
    color: var(--navy-700);
    background: white;
    padding: 3px 8px; border-radius: 999px;
    letter-spacing: 0.04em;
    font-family: -apple-system, system-ui, sans-serif;
  }

  /* Inline format hints under each line input */
  .lh-format-hints {
    display: flex; gap: 6px; flex-wrap: wrap;
    margin-top: 6px;
  }
  .lh-format-hints .hint {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 11px; color: var(--ink-500);
    padding: 2px 8px;
    background: var(--ink-50);
    border-radius: 999px;
    border: 1px solid var(--ink-100);
  }
  .lh-format-hints .hint.ok {
    color: var(--green-500);
    background: var(--green-100);
    border-color: var(--green-100);
  }
  .lh-format-hints .hint.warn {
    color: var(--amber-500);
    background: var(--amber-100);
    border-color: var(--amber-100);
  }

  /* Custom-seal warning callout (App C §1.c) */
  .lh-seal-warning {
    display: flex; align-items: flex-start; gap: 8px;
    margin-top: 10px;
    padding: 8px 12px;
    background: var(--amber-100);
    border: 1px solid var(--amber-500);
    border-radius: var(--radius-sm);
    font-size: 12px; line-height: 1.45;
    color: var(--ink-700);
  }
  .lh-seal-warning .warn-icon {
    font-size: 14px; flex-shrink: 0;
  }

  /* ----- Example callout boxes (per-step SECNAV M-5216.5 reference) ----- */
  .example-box {
    background: var(--navy-50);
    border: 1px solid var(--navy-100);
    border-left: 4px solid var(--navy-600);
    border-radius: var(--radius-sm);
    padding: 14px 18px;
    margin: 0 0 20px;
  }
  .example-box .example-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--navy-700);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .example-box pre.example-text {
    font-family: 'SF Mono', 'Monaco', 'Courier New', monospace;
    font-size: 12px;
    color: var(--ink-700);
    background: white;
    padding: 10px 12px;
    border-radius: 4px;
    margin: 0;
    white-space: pre;
    overflow-x: auto;
    border: 1px solid var(--ink-100);
    line-height: 1.45;
  }
  .example-box .example-note {
    font-size: 12px;
    color: var(--ink-500);
    margin-top: 6px;
  }

  /* ----- Print -----
     The toolkit no longer uses window.print() / @media print to produce a
     PDF. The browser's print path is fragile (text wrapping, missing inline
     styles, browser-injected date/URL/page-number chrome that violates
     SECNAV format). exportPdf() now downloads the .docx and instructs the
     user to convert it via Word's "Save as PDF" - the .docx already has
     verified-correct SECNAV formatting (33/33 audit pass), and a real Word
     renderer prints it pixel-perfectly. The print-host div + @media print
     stylesheet that backed the old approach were removed. */