/* ==========================================================
   Campo de valor padrão (<x-money-input>)
   ----------------------------------------------------------
   Um só visual para todo campo em R$ do app. Tamanhos seguem
   --fm-money-s, que acompanha o dispositivo, com piso de
   legibilidade e alvo de toque nunca menor que 2,75rem.
   ========================================================== */

.fm-money-field {
    --fm-money-s: 1;
    width: 100%;
    min-width: 0;
}

@media (max-width: 767.98px) {
    .fm-money-field { --fm-money-s: 0.94; }
}

@media (min-width: 768px) and (max-width: 1366px) {
    .fm-money-field { --fm-money-s: 0.92; }
}

@media (min-width: 1601px) {
    .fm-money-field { --fm-money-s: 0.9; }
}

.fm-money-label {
    display: block;
    font-size: max(0.7rem, calc(0.8rem * var(--fm-money-s)));
    font-weight: 600;
    letter-spacing: 0.01em;
    color: #475569;
    margin-bottom: calc(0.35rem * var(--fm-money-s));
}

.dark .fm-money-label {
    color: #cbd5e1;
}

.fm-money-req {
    color: #f43f5e;
    margin-left: 0.15rem;
}

.fm-money-wrap {
    position: relative;
    display: block;
}

.fm-money-prefix {
    position: absolute;
    left: calc(0.75rem * var(--fm-money-s));
    top: 50%;
    transform: translateY(-50%);
    font-size: max(0.72rem, calc(0.82rem * var(--fm-money-s)));
    font-weight: 600;
    color: #94a3b8;
    pointer-events: none;
}

.fm-money-input {
    width: 100%;
    /* espaço para o prefixo R$ */
    padding: calc(0.6rem * var(--fm-money-s)) calc(0.85rem * var(--fm-money-s))
             calc(0.6rem * var(--fm-money-s)) calc(2.4rem * var(--fm-money-s));
    /* alvo de toque confortável mesmo na menor escala */
    min-height: 2.75rem;
    border-radius: calc(0.7rem * var(--fm-money-s));
    border: 1px solid rgba(148, 163, 184, 0.45);
    background: rgba(255, 255, 255, 0.9);
    color: #0f172a;
    font-size: max(0.85rem, calc(1rem * var(--fm-money-s)));
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    text-align: right;
    transition: border-color .18s ease, box-shadow .18s ease;
}

.dark .fm-money-input {
    background: rgba(15, 23, 42, 0.7);
    border-color: rgba(71, 85, 105, 0.6);
    color: #f1f5f9;
}

.fm-money-input:focus {
    outline: none;
    border-color: #6366f1;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.22);
}

.fm-money-input:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.fm-money-error {
    margin-top: calc(0.3rem * var(--fm-money-s));
    font-size: max(0.68rem, calc(0.75rem * var(--fm-money-s)));
    color: #e11d48;
}

.dark .fm-money-error {
    color: #fb7185;
}
