﻿/* ============================================================
   Onesown Blazor Components – UnitValueBox
   Eine einzige Eingabebox, in gleich breite Abschnitte geteilt. Die Einheit steht je Abschnitt als
   Floating Label auf der unteren Linie, die Beschriftung des Werts mittig auf der oberen Linie.
   ============================================================ */

.oo-unitvaluebox {
    --oo-uvb-hoehe: var(--oo-size-floating-label-min-height-md);
    --oo-uvb-abstand: var(--oo-size-padding-md-x);
    position: relative;
    display: flex;
    align-items: stretch;
    width: 100%;
    box-sizing: border-box;
    min-height: var(--oo-uvb-hoehe);
    border: var(--oo-border-width) solid var(--oo-color-border);
    border-radius: var(--oo-border-radius);
    background-color: var(--oo-color-surface);
    color: var(--oo-color-text);
    line-height: 1.5;
}

.oo-unitvaluebox.oo-size-xs { --oo-uvb-hoehe: var(--oo-size-floating-label-min-height-xs); --oo-uvb-abstand: var(--oo-size-padding-xs-x); }
.oo-unitvaluebox.oo-size-sm { --oo-uvb-hoehe: var(--oo-size-floating-label-min-height-sm); --oo-uvb-abstand: var(--oo-size-padding-sm-x); }
.oo-unitvaluebox.oo-size-md { --oo-uvb-hoehe: var(--oo-size-floating-label-min-height-md); --oo-uvb-abstand: var(--oo-size-padding-md-x); }
.oo-unitvaluebox.oo-size-lg { --oo-uvb-hoehe: var(--oo-size-floating-label-min-height-lg); --oo-uvb-abstand: var(--oo-size-padding-lg-x); }
.oo-unitvaluebox.oo-size-xl { --oo-uvb-hoehe: var(--oo-size-floating-label-min-height-xl); --oo-uvb-abstand: var(--oo-size-padding-xl-x); }

.oo-unitvaluebox:hover {
    border-color: var(--oo-color-border-strong);
}

.oo-unitvaluebox:focus-within {
    border-color: var(--oo-primary);
}

.oo-unitvaluebox.invalid {
    border-color: var(--oo-danger);
}

/* ── Abschnitte ──────────────────────────────────────────── */

.oo-unitvaluebox__feld {
    position: relative;
    flex: 1 1 0;
    min-width: 0;
    display: flex;
}

    .oo-unitvaluebox__feld + .oo-unitvaluebox__feld {
        border-left: var(--oo-border-width) solid var(--oo-color-border);
    }

.oo-unitvaluebox__eingabe {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    border: 0;
    border-radius: 0;
    outline: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: center;
    padding: 0 var(--oo-uvb-abstand);
}

    .oo-unitvaluebox__eingabe.invalid {
        color: var(--oo-danger);
    }

    .oo-unitvaluebox__eingabe:disabled {
        color: var(--oo-color-text-disabled);
        cursor: not-allowed;
    }

/* ── Floating Labels auf der Linie ───────────────────────── */

.oo-unitvaluebox__titel,
.oo-unitvaluebox__einheit {
    position: absolute;
    left: 50%;
    max-width: calc(100% - var(--oo-space-2));
    padding: 0 var(--oo-space-1);
    overflow: hidden;
    background-color: var(--oo-color-surface);
    color: var(--oo-color-text-subtle);
    font-size: calc(1em - 0.1em);
    line-height: 1;
    text-overflow: ellipsis;
    white-space: nowrap;
    pointer-events: none;
    transition: color 0.25s ease;
}

.oo-unitvaluebox__titel {
    top: 0;
    z-index: 1;
    transform: translate(-50%, -50%);
}

.oo-unitvaluebox__einheit {
    bottom: calc(var(--oo-border-width) * -1);
    transform: translate(-50%, 50%);
}

.oo-unitvaluebox:focus-within .oo-unitvaluebox__titel,
.oo-unitvaluebox__feld:focus-within .oo-unitvaluebox__einheit {
    color: var(--oo-primary);
}

.oo-unitvaluebox.invalid .oo-unitvaluebox__titel {
    color: var(--oo-danger);
}

/* ── Zustände ────────────────────────────────────────────── */

.oo-unitvaluebox--deaktiviert {
    opacity: 0.6;
    cursor: not-allowed;
}

.oo-unitvaluebox--readonly {
    border-style: dashed;
    background-color: var(--oo-color-background);
}

.oo-unitvaluebox.invalid:hover .oo-validation-tooltip {
    display: block;
}
