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

    :root {
      --bg:        #f5f7ff;
      --surface:   #ffffff;
      --surface2:  #eceeff;
      --border:    #cdd1f0;
  --border-control: #7a7fb5; /* 3:1+ on all surfaces - WCAG 1.4.11 for controls */
      --text:      #0f0f2e;
      --muted:     #515180;
      --accent:    #4f46e5;
      --accent-h:  #4338ca;
      --accent-bg: #eeedfb;
      --accent-fg: #3730a3;
      --green:     #16a34a;
      --green-bg:  #dcfce7;
      --green-fg:  #15803d;
      --warn-bg:   #fef9c3;
      --warn-fg:   #854d0e;
      --shadow:    0 1px 3px rgba(0,0,0,.08), 0 4px 16px rgba(0,0,0,.06);
      --radius:    14px;
    }

    body {
      font-family: 'Outfit', sans-serif;
      background: var(--bg);
      color: var(--text);
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      padding: 0 16px 80px;
    }

    .page-hero {
      text-align: center;
      margin-bottom: 40px;
      max-width: 600px;
      padding-top: 32px;
    }

    /* ── Site Nav ─────────────────────────────────────────── */
    .site-header {
      background: var(--surface);
      border-bottom: 1px solid var(--border);
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0 24px;
      height: 56px;
      position: sticky;
      top: 0;
      z-index: 100;
      align-self: stretch;
    }
    .site-logo { font-size: 1.15rem; font-weight: 700; color: var(--text); letter-spacing: -.5px; text-decoration: none; }
    .site-nav { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
    .nav-link {
      display: none;
      align-items: center;
      justify-content: center;
      min-width: 108px;
      font-size: .875rem;
      font-weight: 600;
      padding: 8px 12px;
      border: 1.5px solid var(--border);
      border-radius: 9px;
      color: var(--text);
      background: transparent;
      text-decoration: none;
      transition: background .18s, border-color .18s, color .18s, transform .1s;
    }
    .nav-link:hover { background: var(--accent); border-color: var(--accent); color: #fff; text-decoration: none; transform: translateY(-1px); }
    .nav-link:active { transform: scale(.97); }
    .nav-link.active { background: var(--accent); border-color: var(--accent); color: #fff; }
    @media (min-width: 680px) {
      .site-nav .nav-link { display: inline-flex; }
      .nav-hamburger { display: none !important; }
      .nav-mobile-menu { display: none !important; }
    }
    .nav-hamburger { display: flex; align-items: center; gap: 6px; background: none; border: 1px solid var(--border); cursor: pointer; padding: 10px 12px; min-height: 44px; border-radius: 9px; font-size: .85rem; font-weight: 600; letter-spacing: .06em; color: var(--text); font-family: 'Outfit', sans-serif; transition: background .2s; }
    .nav-hamburger:hover { background: rgba(0,0,0,.07); }
    .nav-mobile-menu { display: none; flex-direction: column; background: var(--surface); border-bottom: 1px solid var(--border); padding: 10px 16px 14px; gap: 8px; align-self: stretch; }
    .nav-mobile-menu.open { display: flex; }
    .nav-mobile-link { display: block; text-align: center; text-decoration: none; font-family: 'Outfit', sans-serif; font-size: 1rem; font-weight: 600; color: var(--text); background: var(--surface2); border: 1.5px solid var(--border); border-radius: 9px; padding: 13px 16px; transition: background .18s, border-color .18s, color .18s; }
    .nav-mobile-link:hover { background: var(--accent); border-color: var(--accent); color: #fff; text-decoration: none; }
    .nav-mobile-link.active { background: var(--accent); border-color: var(--accent); color: #fff; }

    .logo-chip {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      background: var(--accent-bg);
      color: var(--accent-fg);
      font-size: 12px;
      font-weight: 600;
      letter-spacing: .06em;
      text-transform: uppercase;
      padding: 4px 12px;
      border-radius: 999px;
      margin-bottom: 20px;
    }

    h1 {
      font-size: clamp(1.9rem, 5vw, 2.9rem);
      font-weight: 700;
      line-height: 1.15;
      letter-spacing: -.02em;
      margin-bottom: 10px;
    }
    h1 span {
      background: linear-gradient(135deg, var(--accent) 0%, #818cf8 100%);
      -webkit-background-clip: text;
      -webkit-text-fill-color: transparent;
      background-clip: text;
    }

    .subtitle { color: var(--muted); font-size: .95rem; line-height: 1.6; }

    /* Card */
    .card {
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius: var(--radius);
      box-shadow: var(--shadow);
      padding: 28px 28px 32px;
      width: 100%;
      max-width: 620px;
    }

    /* Section label */
    .section-label {
      font-size: 11px;
      font-weight: 700;
      letter-spacing: .08em;
      text-transform: uppercase;
      color: var(--muted);
      margin-bottom: 14px;
      display: flex;
      align-items: center;
      gap: 8px;
    }
    .active-badge {
      background: var(--accent);
      color: #fff;
      font-size: 10px;
      font-weight: 700;
      padding: 1px 7px;
      border-radius: 999px;
      letter-spacing: 0;
    }

    /* Controls row */
    .controls {
      display: flex;
      gap: 12px;
      align-items: flex-end;
    }
    .field {
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: 5px;
    }
    label {
      font-size: 12px;
      font-weight: 600;
      color: var(--muted);
      letter-spacing: .04em;
      text-transform: uppercase;
    }

    /* Form elements */
    input[type="number"], select {
      font-family: 'Outfit', sans-serif;
      font-size: .95rem;
      font-weight: 500;
      color: var(--text);
      background: var(--bg);
      border: 1.5px solid var(--border-control, #7a7fb5);
      border-radius: 9px;
      padding: 10px 12px;
      width: 100%;
      outline: none;
      transition: border-color .15s, box-shadow .15s;
      appearance: none;
      -moz-appearance: textfield;
    }
    input[type="number"]::-webkit-inner-spin-button,
    input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; }
    input[type="number"]:focus, select:focus {
      border-color: var(--accent);
      box-shadow: 0 0 0 3px rgba(79,70,229,.13);
    }
    select {
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238a8680' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
      background-repeat: no-repeat;
      background-position: right 12px center;
      padding-right: 34px;
      cursor: pointer;
    }

    /* Number input with mono font */
    .mono-input {
      font-family: 'JetBrains Mono', monospace;
      font-size: 1rem;
      font-weight: 600;
    }

    /* Filters box */
    .filters-box {
      background: var(--surface2);
      border: 1px solid var(--border);
      border-radius: 10px;
      padding: 18px 18px 16px;
      margin: 20px 0;
    }

    .filter-row {
      display: grid;
      gap: 12px;
      margin-bottom: 12px;
    }
    .filter-row:last-child { margin-bottom: 0; }
    .filter-row.cols-3 { grid-template-columns: 1.5fr 1fr 1fr; }
    .filter-row.cols-3-syll { grid-template-columns: 1.4fr 1.2fr 1fr; }

    .filter-row-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 14px;
    }

    .reset-btn {
      background: none;
      border: none;
      font-family: 'Outfit', sans-serif;
      font-size: 12px;
      font-weight: 600;
      color: var(--muted);
      cursor: pointer;
      padding: 2px 0;
      transition: color .12s;
      display: flex;
      align-items: center;
      gap: 4px;
    }
    .reset-btn:hover { color: var(--accent); }
    .reset-btn svg { width: 12px; height: 12px; }

    /* Divider */
    .divider {
      border: none;
      border-top: 1px solid var(--border);
      margin: 4px 0 24px;
    }

    /* Generate button */
    .btn {
      font-family: 'Outfit', sans-serif;
      font-size: 1rem;
      font-weight: 700;
      color: #fff;
      background: var(--accent);
      border: none;
      border-radius: 10px;
      padding: 12px 28px;
      cursor: pointer;
      white-space: nowrap;
      transition: background .15s, transform .1s, box-shadow .15s;
      display: flex;
      align-items: center;
      gap: 8px;
      box-shadow: 0 2px 8px rgba(79,70,229,.3);
      width: 100%;
      justify-content: center;
      margin-bottom: 24px;
    }
    .btn:hover  { background: var(--accent-h); box-shadow: 0 4px 14px rgba(79,70,229,.4); }
    .btn:active { transform: scale(.98); }
    .btn svg { width: 17px; height: 17px; flex-shrink: 0; }

    /* Pool info bar */
    .pool-bar {
      font-size: 12px;
      color: var(--muted);
      margin-bottom: 16px;
      display: flex;
      align-items: center;
      justify-content: space-between;
    }
    .pool-bar .pool-count {
      font-weight: 600;
      color: var(--text);
    }
    .pool-warn {
      background: var(--warn-bg);
      color: var(--warn-fg);
      font-size: 12px;
      font-weight: 600;
      padding: 6px 12px;
      border-radius: 8px;
      margin-bottom: 16px;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .pool-warn[hidden] { display: none; }  /* class display:flex overrides UA [hidden] without this */
    .pool-warn svg { width: 14px; height: 14px; flex-shrink: 0; }

    /* Results */
    .results-header {
      font-size: 11px;
      font-weight: 700;
      letter-spacing: .08em;
      text-transform: uppercase;
      color: var(--muted);
      margin-bottom: 14px;
      display: flex;
      align-items: center;
      justify-content: space-between;
    }
    .count-badge {
      background: var(--accent-bg);
      color: var(--accent-fg);
      font-size: 11px;
      font-weight: 700;
      padding: 2px 8px;
      border-radius: 999px;
    }
    .copy-all-btn {
      background: none;
      border: 1.5px solid var(--border);
      border-radius: 7px;
      padding: 3px 10px;
      font-family: 'Outfit', sans-serif;
      font-size: 11px;
      font-weight: 600;
      color: var(--muted);
      cursor: pointer;
      transition: border-color .12s, color .12s;
    }
    .copy-all-btn:hover { border-color: var(--accent); color: var(--accent); }
    .copy-all-btn.copied { border-color: var(--green); color: var(--green-fg); }

    .words-grid {
      display: flex;
      flex-wrap: wrap;
      gap: 9px;
    }
    /* Word chips + type dots are created at runtime by JS. This is a plain
       static stylesheet (not Astro-scoped), so selectors are global as-is. */
    .word-chip {
      font-family: 'JetBrains Mono', monospace;
      font-size: .9rem;
      font-weight: 600;
      background: var(--accent-bg);
      color: var(--accent-fg);
      padding: 7px 14px;
      border-radius: 7px;
      cursor: pointer;
      border: 1.5px solid transparent;
      transition: border-color .12s, background .12s, transform .1s;
      user-select: all;
      display: flex;
      align-items: center;
      gap: 6px;
    }
    .word-chip:hover { border-color: var(--accent); background: #e2e1fa; transform: translateY(-1px); }
    .word-chip.copied { border-color: var(--green); background: var(--green-bg); color: var(--green-fg); }

    .type-dot {
      width: 6px; height: 6px;
      border-radius: 50%;
      flex-shrink: 0;
    }
    .dot-n   { background: #3b82f6; }
    .dot-v   { background: #f97316; }
    .dot-j   { background: #22c55e; }
    .dot-r   { background: #a855f7; }

    .empty-state {
      text-align: center;
      padding: 28px 0 8px;
      color: var(--muted);
    }
    .empty-state svg { width: 38px; height: 38px; margin: 0 auto 10px; display: block; opacity: .3; }
    .empty-state p { font-size: .875rem; }

    .no-match {
      text-align: center;
      padding: 20px 0;
      color: var(--muted);
      font-size: .875rem;
    }
    .no-match strong { color: var(--text); }

    /* Type legend */
    .legend {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      margin-top: 18px;
      padding-top: 16px;
      border-top: 1px solid var(--border);
    }
    .legend-item {
      display: flex;
      align-items: center;
      gap: 5px;
      font-size: 11px;
      color: var(--muted);
    }
    .legend-item .type-dot { width: 7px; height: 7px; }

    /* Toast */
    .toast {
      position: fixed;
      bottom: 28px;
      left: 50%;
      transform: translateX(-50%) translateY(70px);
      background: #1a1917;
      color: #fff;
      font-size: 13px;
      font-weight: 500;
      padding: 9px 18px;
      border-radius: 999px;
      opacity: 0;
      transition: transform .22s ease, opacity .22s ease;
      pointer-events: none;
      white-space: nowrap;
    }
    .toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }

    @media (max-width: 520px) {
      body { padding-top: 28px; }
      .filter-row.cols-3,
      .filter-row.cols-3-syll { grid-template-columns: 1fr 1fr; }
      .filter-row.cols-3 .field:first-child,
      .filter-row.cols-3-syll .field:first-child { grid-column: 1 / -1; }
      .filter-row.cols-4 { grid-template-columns: 1fr 1fr !important; }
      .filter-row.cols-4 .field:first-child { grid-column: 1 / -1; }
      .card { padding: 20px 16px 24px; }
      .page-hero { margin-bottom: 24px; }
    }
    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after { transition: none !important; }
    }

    /* How It Works + Use Cases */
    .how-it-works, .use-cases {
      width: 100%;
      max-width: 620px;
      margin-top: 48px;
    }
    .how-it-works h2, .use-cases h2 {
      font-size: 1.3rem;
      font-weight: 700;
      letter-spacing: -.02em;
      margin-bottom: 20px;
    }
    .steps { display: flex; flex-direction: column; gap: 16px; }
    .step { display: flex; gap: 16px; align-items: flex-start; }
    .step-num {
      flex-shrink: 0;
      width: 32px; height: 32px;
      border-radius: 50%;
      background: var(--accent-bg);
      color: var(--accent-fg);
      font-size: .85rem; font-weight: 700;
      display: flex; align-items: center; justify-content: center;
    }
    .step-body h3 { font-size: .95rem; font-weight: 700; margin-bottom: 4px; }
    .step-body p { font-size: .9rem; color: var(--muted); line-height: 1.65; }
    .use-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 12px;
    }
    @media (max-width: 520px) { .use-grid { grid-template-columns: 1fr; } }
    .use-card {
      background: var(--surface);
      border: 1px solid var(--border);
      border-radius: var(--radius);
      padding: 16px 18px;
    }
    .use-card h3 { font-size: .9rem; font-weight: 700; margin-bottom: 6px; }
    .use-card p { font-size: .85rem; color: var(--muted); line-height: 1.55; }

    /* FAQ */
    .faq {
      width: 100%;
      max-width: 620px;
      margin-top: 48px;
    }
    .faq h2 {
      font-size: 1.3rem;
      font-weight: 700;
      letter-spacing: -.02em;
      margin-bottom: 20px;
    }
    .faq details {
      border: 1px solid var(--border);
      border-radius: var(--radius);
      background: var(--surface);
      margin-bottom: 8px;
      overflow: hidden;
    }
    .faq details[open] {
      box-shadow: var(--shadow);
    }
    .faq summary {
      font-size: .95rem;
      font-weight: 600;
      padding: 16px 20px;
      cursor: pointer;
      list-style: none;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 12px;
      user-select: none;
    }
    .faq summary::-webkit-details-marker { display: none; }
    .faq summary::after {
      content: '+';
      font-size: 1.2rem;
      font-weight: 400;
      color: var(--muted);
      flex-shrink: 0;
      transition: transform .2s;
    }
    .faq details[open] summary::after {
      transform: rotate(45deg);
    }
    .faq .faq-body {
      padding: 0 20px 18px;
      font-size: .9rem;
      color: var(--muted);
      line-height: 1.65;
    }

    footer {
      margin-top: 48px;
      font-size: .75rem;
      color: var(--muted);
      text-align: center;
    }
    footer a { color: var(--muted); text-decoration: none; }
    footer a:hover { color: var(--text); }
    .site-logo, .page-hero h1, .dict-hero h1, .tool-hero h1 { font-family: 'Orbitron', sans-serif; }
    .site-logo { font-weight: 900; }
    .page-hero h1, .dict-hero h1, .tool-hero h1 { font-weight: 900; letter-spacing: -.4px; }

/* --- embed framing: /embed/wordgenerator/ --- */
html, body.lk-embed { background: transparent !important; margin: 0; padding: 0; }
body.lk-embed { padding: 14px; box-sizing: border-box; }
body.lk-embed main { max-width: 640px; margin: 0 auto; }
.embed-attrib { display:block; text-align:center; margin-top:14px; font-family:'Outfit',system-ui,sans-serif; font-size:13px; font-weight:600; color:#4f46e5; text-decoration:none; opacity:.85; }
.embed-attrib:hover { opacity:1; text-decoration:underline; }

/* lk-compact-menu: compact floating mobile menu — width fits longest item, height capped ~60vh with scroll */
.nav-mobile-menu.open{position:fixed;top:60px;right:12px;left:auto;width:max-content;min-width:0;max-width:calc(100vw - 24px);max-height:min(62vh,560px);overflow-y:auto;gap:2px;padding:6px;border-radius:12px;box-shadow:0 12px 28px rgba(0,0,0,.24);z-index:210;}
.nav-mobile-menu.open .nav-mobile-link{padding:8px 14px;font-size:.9rem;white-space:nowrap;text-align:left;justify-content:flex-start;}
