/* ===========================================================================
   Netwerk en beoordelingen

   De strook onder een profielnaam, het paneel met het gemiddelde, de
   beoordelingen zelf, het sterrenformulier en de netwerkpagina.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   1. Sterren
   --------------------------------------------------------------------------- */
.sterren { display: inline-flex; gap: 2px; line-height: 0; vertical-align: middle; }
.sterren svg { width: 1em; height: 1em; display: block; }
.sterren--groot { font-size: 1.45rem; }
.sterren__leeg { fill: var(--lijn-sterk); }
.sterren__vol { fill: var(--goud); }

/* ---------------------------------------------------------------------------
   2. Naambol

   Een profielfoto als die er is, anders de beginletters. Zo staat er nooit
   een leeg vlak waar een gezicht hoort.
   --------------------------------------------------------------------------- */
.persoonbol {
    width: 46px;
    height: 46px;
    flex-shrink: 0;
    display: grid;
    place-items: center;
    border-radius: var(--rond-vol);
    background: var(--inkt);
    color: var(--goud-licht);
    font-family: var(--font-titel);
    font-weight: 600;
    font-size: 1.02rem;
    letter-spacing: .02em;
    overflow: hidden;
}
.persoonbol img { width: 100%; height: 100%; object-fit: cover; }
.persoonbol--groot { width: 54px; height: 54px; font-size: 1.1rem; }

/* ---------------------------------------------------------------------------
   3. Strook onder de profielnaam
   --------------------------------------------------------------------------- */
.profielband {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--ruimte-3) var(--ruimte-5);
    margin-top: var(--ruimte-5);
    padding-top: var(--ruimte-4);
    border-top: 1px solid var(--lijn);
}
.profielband__cijfer { display: flex; align-items: center; gap: var(--ruimte-2); font-size: .93rem; color: var(--tekst-zacht); }
.profielband__cijfer b { font-size: 1.05rem; color: var(--tekst); }
.profielband__cijfer a { color: inherit; }
.profielband__scheiding { width: 1px; height: 22px; background: var(--lijn); }
.profielband__knoppen { margin-left: auto; display: flex; flex-wrap: wrap; gap: var(--ruimte-2); }

@media (max-width: 620px) {
    .profielband__knoppen { margin-left: 0; width: 100%; }
    .profielband__scheiding { display: none; }
}

/* ---------------------------------------------------------------------------
   4. Paneel met het gemiddelde

   Links het cijfer, rechts hoe de scores verdeeld zijn, met een haarlijn
   ertussen. Twee kolommen die naar elkaar toe staan.
   --------------------------------------------------------------------------- */
.reputatie {
    display: grid;
    grid-template-columns: minmax(150px, 190px) 1px 1fr;
    gap: var(--ruimte-6);
    align-items: center;
    padding: var(--ruimte-6);
    background: var(--wit);
    border: 1px solid var(--lijn);
    border-radius: var(--rond-l);
    box-shadow: var(--schaduw-s);
}
@media (max-width: 620px) {
    .reputatie { grid-template-columns: 1fr; gap: var(--ruimte-5); }
    .reputatie__lijn { display: none; }
}

.reputatie__lijn { background: var(--lijn); align-self: stretch; }

.reputatie__cijfer { text-align: center; }
.reputatie__getal {
    font-family: var(--font-titel);
    font-size: clamp(3rem, 2.2rem + 3vw, 4.2rem);
    font-weight: 600;
    line-height: .95;
    letter-spacing: -.04em;
    color: var(--inkt);
    font-variant-numeric: tabular-nums;
}
.reputatie__van { font-size: .82rem; color: var(--tekst-licht); margin-top: var(--ruimte-2); }

.balken { display: grid; gap: 6px; }
.balk {
    display: grid;
    grid-template-columns: 3.6rem 1fr 2rem;
    gap: var(--ruimte-3);
    align-items: center;
    font-size: .82rem;
}
.balk__naam { color: var(--tekst-zacht); white-space: nowrap; }
.balk__spoor {
    display: block;
    height: 9px;
    border-radius: var(--rond-vol);
    background: #ebe3d6;
    box-shadow: inset 0 1px 2px rgba(10, 20, 32, .06);
    overflow: hidden;
}
.balk__vul {
    display: block;
    height: 100%;
    border-radius: var(--rond-vol);
    background: linear-gradient(90deg, var(--goud-licht), var(--goud));
}
.balk__aantal { text-align: right; color: var(--tekst-licht); font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------------------------
   5. Een beoordeling
   --------------------------------------------------------------------------- */
.beoordelingen { display: grid; gap: var(--ruimte-4); }

.beoordeling {
    background: var(--wit);
    border: 1px solid var(--lijn);
    border-radius: var(--rond-l);
    padding: var(--ruimte-5);
}
.beoordeling--wacht { border-style: dashed; border-color: var(--lijn-sterk); background: var(--room-diep); }
.beoordeling--afgewezen { opacity: .7; }

.beoordeling__kop { display: flex; gap: var(--ruimte-4); align-items: flex-start; margin-bottom: var(--ruimte-4); }
.beoordeling__wie { flex: 1; min-width: 0; }
.beoordeling__naam { font-weight: 600; margin: 0; }
.beoordeling__naam a { color: inherit; text-decoration: none; }
.beoordeling__naam a:hover { color: var(--groen); }
.beoordeling__wanneer { font-size: .82rem; color: var(--tekst-licht); }
.beoordeling__titel {
    font-family: var(--font-titel);
    font-size: 1.16rem;
    font-weight: 600;
    letter-spacing: -.015em;
    margin: 0 0 var(--ruimte-2);
}
.beoordeling__tekst { margin: 0; color: #232f3e; white-space: pre-line; }

.beoordeling__antwoord {
    margin: var(--ruimte-4) 0 0 var(--ruimte-6);
    padding: var(--ruimte-4);
    background: var(--room);
    border: 1px solid var(--lijn);
    border-radius: var(--rond-m);
}
@media (max-width: 560px) { .beoordeling__antwoord { margin-left: 0; } }
.beoordeling__antwoordlabel {
    display: block;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--goud-donker);
    margin-bottom: var(--ruimte-2);
}
.beoordeling__antwoord p { margin: 0; white-space: pre-line; }

.beoordeling__voet {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ruimte-2);
    align-items: center;
    margin-top: var(--ruimte-4);
    padding-top: var(--ruimte-4);
    border-top: 1px solid var(--lijn);
}

/* De knoppen in het beheer staan elk in een eigen formulier. Die moeten
   naast elkaar blijven staan in plaats van elk een eigen regel te nemen. */
.beoordeling__voet form {
    display: flex;
    gap: var(--ruimte-2);
    align-items: center;
    margin: 0;
}
.beoordeling__voet input[type="text"] {
    width: 220px;
    padding: .42rem .7rem;
    font-size: .84rem;
    margin: 0;
}

/* ---------------------------------------------------------------------------
   6. Sterren kiezen

   De sterren staan van vijf naar één in de code, zodat de sterren links van
   de aangewezen ster mee oplichten zonder dat daar script voor nodig is.
   --------------------------------------------------------------------------- */
.scorekiezer {
    display: flex;
    gap: var(--ruimte-2);

    /* De sterren staan van vijf naar één in de code. Omgekeerd afbeelden zet
       ster één weer links, en zorgt dat de sterren links van de aangewezen
       ster meekleuren. */
    flex-direction: row-reverse;
    justify-content: flex-end;
}
.scorekiezer input { position: absolute; opacity: 0; width: 0; height: 0; }
.scorekiezer label {
    cursor: pointer;
    font-size: 1.9rem;
    line-height: 1;
    color: var(--lijn-sterk);
    transition: color var(--tijd-kort) var(--soepel-kort), transform var(--tijd-tik) var(--soepel);
}
.scorekiezer label svg { width: 1em; height: 1em; fill: currentColor; display: block; }
.scorekiezer input:checked ~ label { color: var(--goud); }
.scorekiezer input:focus-visible + label { outline: 3px solid var(--goud); outline-offset: 3px; border-radius: 4px; }

@media (hover: hover) and (pointer: fine) {
    .scorekiezer label:hover,
    .scorekiezer label:hover ~ label { color: var(--goud); }
    .scorekiezer label:hover { transform: scale(1.08); }
}
.scorekiezer label:active { transform: scale(.92); }

.scorewoord {
    font-size: .88rem;
    font-weight: 600;
    color: var(--goud-donker);
    min-height: 1.4em;
    margin: var(--ruimte-2) 0 0;
}

/* ---------------------------------------------------------------------------
   7. Netwerkpagina
   --------------------------------------------------------------------------- */
.netwerkrooster {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: var(--ruimte-4);
}

.netwerkkaart {
    display: flex;
    gap: var(--ruimte-4);
    align-items: center;
    padding: var(--ruimte-4);
    background: var(--wit);
    border: 1px solid var(--lijn);
    border-radius: var(--rond-l);
    text-decoration: none;
    color: var(--tekst);
    transition:
        transform var(--tijd-kort) var(--soepel),
        box-shadow var(--tijd-kort) var(--soepel),
        border-color var(--tijd-kort) var(--soepel-kort);
}
.netwerkkaart__naam { font-weight: 600; line-height: 1.25; display: block; }
.netwerkkaart__onder { font-size: .82rem; color: var(--tekst-zacht); }

@media (hover: hover) and (pointer: fine) {
    .netwerkkaart:hover {
        transform: translateY(-2px);
        box-shadow: var(--schaduw-m);
        border-color: var(--goud);
        color: var(--tekst);
    }
}

.netwerkkaart__actie { margin-left: auto; }

/* ---------------------------------------------------------------------------
   8. Een uitnodiging die op antwoord wacht
   --------------------------------------------------------------------------- */
.uitnodiging {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: var(--ruimte-4);
    align-items: center;
    padding: var(--ruimte-5);
    background: linear-gradient(180deg, #fffdf7, var(--wit));
    border: 1px solid #f0d4a0;
    border-radius: var(--rond-l);
}
.uitnodiging + .uitnodiging { margin-top: var(--ruimte-3); }
.uitnodiging__naam { margin: 0; font-weight: 600; }
.uitnodiging__onder { font-size: .85rem; color: var(--tekst-zacht); }
.uitnodiging__bericht {
    font-size: .9rem;
    color: var(--tekst-zacht);
    margin: var(--ruimte-2) 0 0;
    font-style: italic;
}
.uitnodiging__knoppen { display: flex; gap: var(--ruimte-2); }

@media (max-width: 620px) {
    .uitnodiging { grid-template-columns: auto 1fr; }
    .uitnodiging__knoppen { grid-column: 1 / -1; }
}

/* ---------------------------------------------------------------------------
   9. Teller bij een menupunt
   --------------------------------------------------------------------------- */
.teller {
    display: inline-grid;
    place-items: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    margin-left: var(--ruimte-2);
    border-radius: var(--rond-vol);
    background: var(--goud);
    color: var(--inkt);
    font-size: .72rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
