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

    body {
      font-family: system-ui, -apple-system, sans-serif;
      background: #f5f5f5;
      color: #222;
      min-height: 100vh;
      display: flex;
      justify-content: center;
      padding: 2rem 1rem;
    }

    .app {
      width: 100%;
      max-width: 480px;
    }

    h1 {
      font-size: 1.4rem;
      font-weight: 600;
      margin-bottom: 1.5rem;
      color: #111;
    }

    /* Tabs */
    .tabs {
      display: flex;
      gap: 0;
      margin-bottom: 1.5rem;
      border-bottom: 2px solid #e0e0e0;
    }

    .tab {
      padding: 0.5rem 1.25rem;
      background: none;
      border: none;
      cursor: pointer;
      font-size: 0.95rem;
      color: #888;
      border-bottom: 2px solid transparent;
      margin-bottom: -2px;
      transition: color 0.15s;
    }

    .tab.active {
      color: #111;
      border-bottom-color: #111;
      font-weight: 500;
    }

    /* Panels */
    .panel { display: none; }
    .panel.active { display: block; }

    /* Form */
    .field {
      margin-bottom: 1rem;
    }

    label {
      display: block;
      font-size: 0.82rem;
      font-weight: 500;
      color: #555;
      margin-bottom: 0.3rem;
      text-transform: uppercase;
      letter-spacing: 0.04em;
    }

    input[type="text"],
    input[type="password"],
    select {
      width: 100%;
      padding: 0.55rem 0.75rem;
      border: 1px solid #ddd;
      border-radius: 6px;
      font-size: 0.95rem;
      background: #fff;
      color: #111;
      outline: none;
      transition: border-color 0.15s;
    }

    input[type="text"]:focus,
    input[type="password"]:focus,
    select:focus {
      border-color: #888;
    }

    /* Styling section */
    .section-title {
      font-size: 0.75rem;
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      color: #aaa;
      margin: 1.5rem 0 1rem;
    }

    .row {
      display: flex;
      gap: 1rem;
    }

    .row .field { flex: 1; }

    /* Color pickers */
    .color-field {
      display: flex;
      align-items: center;
      gap: 0.5rem;
    }

    input[type="color"] {
      width: 2.2rem;
      height: 2.2rem;
      border: 1px solid #ddd;
      border-radius: 6px;
      padding: 2px;
      cursor: pointer;
      background: #fff;
    }

    .color-hex {
      font-size: 0.88rem;
      color: #555;
      font-family: monospace;
    }

    /* Logo upload */
    .logo-row {
      display: flex;
      align-items: center;
      gap: 0.75rem;
    }

    .logo-btn {
      padding: 0.5rem 1rem;
      border: 1px solid #ddd;
      border-radius: 6px;
      background: #fff;
      font-size: 0.88rem;
      cursor: pointer;
      color: #444;
      transition: border-color 0.15s;
      white-space: nowrap;
    }

    .logo-btn:hover { border-color: #888; }

    #logo-input { display: none; }

    .logo-clear {
      font-size: 0.82rem;
      color: #999;
      cursor: pointer;
      text-decoration: underline;
      background: none;
      border: none;
    }

    .logo-name {
      font-size: 0.82rem;
      color: #666;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      max-width: 140px;
    }

    /* Preview */
    .preview {
      display: flex;
      flex-direction: column;
      align-items: center;
      margin: 2rem 0 1.5rem;
    }

    #qr-canvas {
      border-radius: 8px;
      overflow: hidden;
    }

    /* Download */
    .download-row {
      display: flex;
      gap: 0.5rem;
    }

    .fmt-btn {
      padding: 0.75rem 1rem;
      background: #fff;
      color: #111;
      border: 1px solid #ddd;
      border-radius: 8px;
      font-size: 0.88rem;
      font-weight: 500;
      cursor: pointer;
      transition: border-color 0.15s, background 0.15s;
    }

    .fmt-btn.active {
      background: #111;
      color: #fff;
      border-color: #111;
    }

    .download-btn {
      flex: 1;
      padding: 0.75rem;
      background: #111;
      color: #fff;
      border: none;
      border-radius: 8px;
      font-size: 1rem;
      font-weight: 500;
      cursor: pointer;
      transition: background 0.15s;
    }

    .download-btn:hover { background: #333; }
