
    .field {
      display: grid;
      gap: 6px;
    }

    .field label {
      font-size: .78rem;
      font-weight: 800;
      color: var(--muted);
      text-transform: uppercase;
      letter-spacing: .04em;
    }

    .field input,
    .field select,
    .field textarea {
      padding: 10px 12px;
      border: 1px solid var(--line);
      border-radius: 11px;
      background: var(--surface);
      color: var(--text);
      width: 100%;
      max-width: 100%;
      box-sizing: border-box;
    }

    .field input[aria-invalid="true"],
    .field select[aria-invalid="true"],
    .field textarea[aria-invalid="true"],
    .field input.is-invalid,
    .field select.is-invalid,
    .field textarea.is-invalid {
      border-color: var(--danger) !important;
      background-color: var(--danger-soft) !important;
      box-shadow: 0 0 0 2px var(--danger-soft) !important;
    }

    .field-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 12px;
    }

    .hint {
      margin: 0;
      font-size: .78rem;
      color: var(--muted);
      background: var(--surface-2);
      padding: 10px 12px;
      border-radius: 10px;
      border: 1px solid var(--line);
      font-weight: 600;
    }

    .calc-badge {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 6px 12px;
      border-radius: 8px;
      background: var(--brand-soft);
      color: var(--brand-strong);
      font-weight: 800;
      font-size: .82rem;
      border: 1px solid transparent;
      transition: all .2s ease;
    }

    .calc-badge.invalid,
    .calc-badge.error {
      background: var(--danger-soft, rgba(239, 68, 68, 0.15)) !important;
      color: var(--danger, #ef4444) !important;
      border: 1px solid var(--danger, #ef4444) !important;
    }

    dialog {
      border: none;
      padding: 0;
      border-radius: 20px;
      background: var(--surface);
      color: var(--text);
      box-shadow: var(--shadow-lg);
      width: min(680px, 94vw);
      max-height: 90vh;
      overflow: hidden;
    }

    dialog#csvDialog {
      width: min(640px, 92vw);
      max-width: 640px;
      border-radius: 16px;
    }

    dialog::backdrop {
      background: rgba(10, 16, 14, 0.6);
      backdrop-filter: blur(3px);
    }

    .dialog-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 16px 20px;
      border-bottom: 1px solid var(--line);
      background: var(--surface-2);
    }

    .dialog-head h3 {
      margin: 0;
      font-size: 1.05rem;
      font-weight: 800;
    }

    .dialog-body {
      padding: 18px 20px;
      display: grid;
      gap: 14px;
      max-height: 68vh;
      overflow-y: auto;
    }

    .dialog-foot {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 14px 20px;
      border-top: 1px solid var(--line);
      flex-wrap: wrap;
      background: var(--surface-2);
    }