/* ───────── Forms (dark glass) ───────── */

.form-group {
    margin-bottom: var(--space-lg);
}

.form-group label {
    display: block;
    margin-bottom: 8px;
    font-family: var(--font-heading);
    font-weight: 500;
    font-size: 14px;
    color: #fff;
    letter-spacing: 0.01em;
}

.form-group label span[aria-hidden="true"] {
    color: var(--accent-pink);
    margin-left: 2px;
}

.form-group .form-optional {
    color: var(--text-muted);
    font-weight: 400;
    font-size: 13px;
    margin-left: 4px;
    text-transform: lowercase;
}

.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="tel"],
.form-group input[type="password"],
.form-group input[type="url"],
.form-group input[type="search"],
.form-group input[type="number"],
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 13px 16px;
    font-family: var(--font-sans);
    font-size: 15px;
    color: #fff;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--glass-border);
    border-radius: var(--r);
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
    line-height: 1.4;
}

.form-group input::placeholder,
.form-group textarea::placeholder {
    color: var(--text-muted);
}

.form-group input:hover,
.form-group select:hover,
.form-group textarea:hover {
    border-color: rgba(255, 255, 255, 0.18);
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: rgba(180, 124, 253, 0.55);
    background: rgba(255, 255, 255, 0.06);
    box-shadow: 0 0 0 3px rgba(180, 124, 253, 0.18);
}

.form-group textarea {
    min-height: 140px;
    resize: vertical;
    font-family: var(--font-sans);
}

/* File inputs: same glass field, with the browser's button restyled. The
   native control has a fixed intrinsic width, so cap it to the column. */
.form-group input[type="file"] {
    width: 100%;
    max-width: 100%;
    padding: 8px;
    font-family: var(--font-sans);
    font-size: 14px;
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.04);
    border: 1px dashed var(--glass-border);
    border-radius: var(--r);
    cursor: pointer;
}

.form-group input[type="file"]::file-selector-button {
    margin-right: 12px;
    padding: 9px 16px;
    font: 600 14px var(--font-heading);
    color: #fff;
    background: var(--glass-hover);
    border: 1px solid var(--glass-border);
    border-radius: var(--r-pill);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}

.form-group input[type="file"]:hover::file-selector-button {
    background: rgba(180, 124, 253, 0.18);
    border-color: rgba(180, 124, 253, 0.45);
}

.form-group input.error,
.form-group textarea.error,
.form-group select.error {
    border-color: var(--color-error);
    background: rgba(239, 68, 68, 0.06);
}

.form-group input.error:focus,
.form-group textarea.error:focus,
.form-group select.error:focus {
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.18);
}

.field-error {
    display: block;
    min-height: 1.2em;
    margin-top: 6px;
    color: var(--color-error);
    font-size: 13.5px;
    line-height: 1.4;
}

.field-error:empty {
    display: none;
}

.form-help {
    display: block;
    margin-top: 6px;
    color: var(--text-muted);
    font-size: 13px;
}

/* Honeypot field — visually hidden from real users; bots that read the form
   HTML will fill it and reveal themselves. Avoid display:none, which some
   bots specifically skip. */
.hp-field {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
