﻿/* Paikkojen lista- ja muokkaussivut. Kartta ei käytä näitä luokkia.
   Sijainti: wwwroot/paikat.css, linkitetään App.razor:n <head>-osaan. */

.sivu {
    --tausta: #ffffff;
    --kortti: #f6f8fa;
    --teksti: #1f2328;
    --himmea: #6b7280;
    --reuna: #d0d7de;
    --ensisijainen: #2e7d32;
    --ensisijainen-reuna: #1b5e20;
    --virhe: #b71c1c;
    --virhe-tausta: #fdecea;
    --kylla: #2e7d32;
    --ei: #c62828;
    box-sizing: border-box;
    max-width: 90rem;
    min-height: 100dvh;
    margin: 0 auto;
    padding: 1rem;
    background: var(--tausta);
    color: var(--teksti);
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    line-height: 1.4;
}

@media (prefers-color-scheme: dark) {
    .sivu {
        --tausta: #15191e;
        --kortti: #1f252c;
        --teksti: #e6edf3;
        --himmea: #9aa4af;
        --reuna: #3a434d;
        --ensisijainen: #43a047;
        --ensisijainen-reuna: #66bb6a;
        --virhe: #ff8a80;
        --virhe-tausta: #3b1f1f;
        --kylla: #66bb6a;
        --ei: #ef5350;
    }
}

.sivu *, .sivu *::before, .sivu *::after {
    box-sizing: border-box;
}

/* ---------- Otsikko ja navigointi ---------- */

.sivu-otsikko {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    margin-bottom: 1rem;
}

    .sivu-otsikko h1 {
        margin: 0;
        font-size: 1.5rem;
    }

.sivu .linkki {
    color: var(--ensisijainen);
    text-decoration: none;
}

    .sivu .linkki:hover {
        text-decoration: underline;
    }

.yhteenveto {
    color: var(--himmea);
    margin: 0 0 0.75rem;
}

/* ---------- Painikkeet ---------- */

.painike {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px; /* sormelle sopiva kohde */
    padding: 0 1.1rem;
    border: 1px solid var(--reuna);
    border-radius: 6px;
    background: var(--kortti);
    color: inherit;
    font: inherit;
    text-decoration: none;
    cursor: pointer;
}

    .painike:hover:not(:disabled) {
        border-color: var(--himmea);
    }

    .painike:disabled {
        opacity: 0.6;
        cursor: default;
    }

    .painike.ensisijainen {
        background: var(--ensisijainen);
        border-color: var(--ensisijainen-reuna);
        color: #fff;
    }

/* ---------- Virheilmoitus ---------- */

.virheet {
    margin: 0 0 1rem;
    padding: 0.6rem 1rem;
    border-radius: 6px;
    background: var(--virhe-tausta);
    color: var(--virhe);
}

    .virheet ul {
        margin: 0;
        padding-left: 1.2rem;
    }

/* ---------- Lista: taulukko (leveä näyttö) ---------- */

.taulu-kaaret {
    overflow: auto;
    max-height: calc(100dvh - 9rem);
    border: 1px solid var(--reuna);
    border-radius: 8px;
}

.paikkataulu {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

    .paikkataulu th,
    .paikkataulu td {
        padding: 6px 10px;
        border-bottom: 1px solid var(--reuna);
        text-align: center;
        white-space: nowrap;
    }

    .paikkataulu thead th {
        position: sticky;
        top: 0;
        z-index: 2;
        background: var(--kortti);
    }

    /* Numerosarake pysyy näkyvissä vaakasuuntaisessa vierityksessä */
    .paikkataulu th:first-child,
    .paikkataulu td.numero {
        position: sticky;
        left: 0;
        z-index: 1;
        background: var(--kortti);
        font-weight: 700;
    }

    .paikkataulu thead th:first-child {
        z-index: 3;
    }

    .paikkataulu tbody tr:hover td {
        background: color-mix(in srgb, var(--ensisijainen) 8%, var(--tausta));
    }

        .paikkataulu tbody tr:hover td.numero {
            background: color-mix(in srgb, var(--ensisijainen) 12%, var(--kortti));
        }

    .paikkataulu tr.ei-aktiivinen td {
        opacity: 0.55;
    }

    .paikkataulu .painike {
        min-height: 32px;
        padding: 0 0.7rem;
    }

.bool-kylla {
    color: var(--kylla);
    font-weight: 700;
}

.bool-ei {
    color: var(--ei);
    font-weight: 700;
}

.bool-tuntematon {
    color: var(--himmea);
}

/* ---------- Lista: kortit (puhelin ja pieni näyttö) ---------- */

@media (max-width: 899px) {
    .taulu-kaaret {
        max-height: none;
        overflow: visible;
        border: 0;
    }

    .paikkataulu,
    .paikkataulu tbody,
    .paikkataulu tr,
    .paikkataulu td {
        display: block;
    }

        .paikkataulu thead {
            display: none;
        }

        .paikkataulu tr {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 4px 1rem;
            margin-bottom: 0.75rem;
            padding: 0.75rem 1rem;
            border: 1px solid var(--reuna);
            border-radius: 10px;
            background: var(--kortti);
        }

        /* Puhelimessa vain tärkeimmät tiedot, loput näkyvät muokkauksessa */
        .paikkataulu td.laaja {
            display: none;
        }

        .paikkataulu td {
            display: flex;
            justify-content: space-between;
            gap: 0.5rem;
            padding: 2px 0;
            border: 0;
            background: transparent;
            text-align: right;
            white-space: normal;
        }

            .paikkataulu td[data-label]::before {
                content: attr(data-label);
                color: var(--himmea);
                text-align: left;
            }

            .paikkataulu td.numero,
            .paikkataulu td.toiminto {
                grid-column: 1 / -1;
            }

            .paikkataulu td.numero {
                position: static;
                background: transparent;
                font-size: 1.25rem;
            }

                .paikkataulu td.numero::before {
                    content: "Paikka ";
                    font-weight: 400;
                    color: var(--himmea);
                    margin-right: 0.35rem;
                }

            .paikkataulu td.numero {
                justify-content: flex-start;
            }

        .paikkataulu tbody tr:hover td,
        .paikkataulu tbody tr:hover td.numero {
            background: transparent;
        }

        .paikkataulu td.toiminto {
            margin-top: 0.5rem;
        }

            .paikkataulu td.toiminto .painike {
                width: 100%;
                min-height: 44px;
            }
}

/* ---------- Lomake ---------- */

.ryhma {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 0.75rem 1rem;
    margin: 0 0 1rem;
    padding: 0.5rem 1rem 1rem;
    border: 1px solid var(--reuna);
    border-radius: 8px;
}

    .ryhma legend {
        padding: 0 0.4rem;
        font-weight: 600;
    }

.kentta {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 0.9rem;
}

    .kentta > span {
        color: var(--himmea);
    }

    .kentta input:not([type="checkbox"]),
    .kentta select {
        width: 100%;
        min-height: 44px;
        padding: 0.4rem 0.6rem;
        border: 1px solid var(--reuna);
        border-radius: 6px;
        background: var(--tausta);
        color: var(--teksti);
        font: inherit;
        font-size: 1rem; /* 16 px: iOS ei zoomaa kenttää kohdistettaessa */
    }

        .kentta input:focus,
        .kentta select:focus {
            outline: 2px solid var(--ensisijainen);
            outline-offset: 1px;
        }

    .kentta input.invalid {
        border-color: var(--virhe);
    }

    .kentta.valinta {
        flex-direction: row;
        align-items: center;
        gap: 0.6rem;
        min-height: 44px;
        font-size: 1rem;
        cursor: pointer;
    }

        .kentta.valinta > span {
            color: inherit;
        }

        .kentta.valinta input[type="checkbox"] {
            flex: none;
            width: 22px;
            height: 22px;
        }

/* Tallenna ja Peru pysyvät näkyvissä pitkällä lomakkeella */
.toiminnot {
    position: sticky;
    bottom: 0;
    display: flex;
    gap: 0.5rem;
    margin: 0 -1rem;
    padding: 0.75rem 1rem calc(0.75rem + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--reuna);
    background: var(--tausta);
}

@media (max-width: 599px) {
    .sivu {
        padding: 0.75rem;
    }

    .toiminnot {
        margin: 0 -0.75rem;
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }

        .toiminnot .painike {
            flex: 1;
        }
}
