/* Composants réutilisables : boutons, tags, bascule, cartes, champs. */

/* Bouton */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: 16px 28px;
    border: 0;
    border-radius: var(--radius-pill);
    background: var(--accent);
    color: var(--on-accent);
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 16px;
    line-height: 1.3;
    cursor: pointer;
    transition: background var(--duration) var(--ease), transform var(--duration) var(--ease);
}
.btn:hover {
    background: var(--accent-hover);
    transform: translateY(-1px);
}
.btn--ghost {
    background: transparent;
    box-shadow: inset 0 0 0 1px var(--border);
    color: var(--text);
}
.btn--ghost:hover {
    background: var(--surface);
    box-shadow: inset 0 0 0 1px var(--text-muted);
}

/* Tag / filtre */
.tag {
    display: inline-flex;
    align-items: center;
    padding: 7px 15px;
    border: 1px solid var(--border);
    border-radius: var(--radius-pill);
    background: transparent;
    color: var(--text);
    font-size: 14px;
    line-height: 1.4;
    cursor: pointer;
    transition: background var(--duration) var(--ease), border-color var(--duration) var(--ease);
}
.tag:hover {
    border-color: var(--text-muted);
}
.tag[aria-pressed="true"],
.tag[aria-current="true"],
.tag--active {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--on-accent);
}
.tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

/* Bascule (ex. Photo / Dev) */
.toggle {
    display: inline-flex;
    gap: var(--space-1);
    padding: var(--space-1);
    border: 1px solid var(--border);
    border-radius: var(--radius-pill);
    background: var(--surface);
}
.toggle__option {
    padding: 10px 24px;
    border: 0;
    border-radius: var(--radius-pill);
    background: transparent;
    color: var(--text-muted);
    font-weight: 500;
    font-size: 15px;
    line-height: 20px;
    cursor: pointer;
    transition: background var(--duration) var(--ease), color var(--duration) var(--ease);
}
.toggle__option[aria-pressed="true"] {
    background: var(--accent);
    color: var(--on-accent);
    font-weight: 700;
}

/* Carte photo : image au ratio d'origine + légende */
.photo-card {
    display: block;
    margin: 0;
}
.photo-card__media {
    overflow: hidden;
    border-radius: var(--radius-card);
    background: var(--surface);
}
.photo-card__media img {
    width: 100%;
    height: auto;
    transition: transform 600ms var(--ease);
}
.photo-card:hover .photo-card__media img {
    transform: scale(1.03);
}
.photo-card__caption {
    margin-top: var(--space-3);
    font-family: var(--font-mono);
    font-size: 12px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted);
}

/* Carte projet */
.project-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--border);
    border-radius: var(--radius-card);
    background: var(--surface);
    transition: border-color var(--duration) var(--ease), transform var(--duration) var(--ease);
}
.project-card:hover {
    border-color: var(--accent);
    transform: translateY(-2px);
}
.project-card__media {
    aspect-ratio: 16 / 10;
    background: var(--bg);
}
.project-card__body {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    padding: var(--space-5);
}
.project-card__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
}
.project-card__year {
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--text-muted);
}
.project-card__text {
    color: var(--text-muted);
}
.link-arrow {
    color: var(--accent-text);
    font-weight: 700;
}

/* Champs de formulaire */
.field {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}
.field__label {
    font-family: var(--font-mono);
    font-size: 12px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text-muted);
}
.field__input {
    width: 100%;
    padding: 16px 20px;
    border: 1px solid var(--border);
    border-radius: var(--radius-field);
    background: var(--surface);
    color: var(--text);
    font: inherit;
    transition: border-color var(--duration) var(--ease);
}
.field__input:hover {
    border-color: var(--text-muted);
}
.field__input:focus {
    outline: none;
    border-color: var(--accent);
}
textarea.field__input {
    min-height: 160px;
    resize: vertical;
}
.field__error {
    color: var(--accent-text);
    font-size: 14px;
}
.field--invalid .field__input {
    border-color: var(--accent);
}
