/* ========================================
   TEEMA MUUTUJAD (Theme Variables)
   ======================================== */
:root {
    /* Hele teema (vaikimisi) */
    --bg-primary: #f4f4f4;
    --bg-secondary: #ffffff;
    --bg-card: #ffffff;
    --bg-hover: #f5f5f5;
    --bg-navbar: #00d1b2;
    
    --text-primary: #363636;
    --text-secondary: #4a4a4a;
    --text-muted: #7a7a7a;
    --text-link: #00d1b2;
    
    --border-color: #dbdbdb;
    --border-light: #ededed;
    
    --shadow-card: 0 0.5em 1em -0.125em rgba(10,10,10,.1), 0 0 0 1px rgba(10,10,10,.02);
    --shadow-hover: 0 4px 8px rgba(0, 0, 0, 0.2);
    
    --accent-color: #00d1b2;
    --accent-hover: #00c4a7;
    
    /* Kaardi overlay heleda teema jaoks */
    --card-overlay-bg: rgba(255, 255, 255, 0.98);
}

/* Tume teema - manuaalne lüliti */
[data-theme="dark"] {
    /* Bulma primary värv tumedas režiimis (navy, vastab --bg-navbar #0f3460) */
    --bulma-primary-h: 213;
    --bulma-primary-s: 73%;
    --bulma-primary-l: 22%;
    --bulma-primary-invert-l: 100%;

    --bg-primary: #1a1a2e;
    --bg-secondary: #16213e;
    --bg-card: #1f2940;
    --bg-hover: #2a3a5a;
    --bg-navbar: #0f3460;
    
    --text-primary: #e4e4e7;
    --text-secondary: #a1a1aa;
    --text-muted: #71717a;
    --text-link: #22d3ee;
    
    --border-color: #3f3f46;
    --border-light: #27272a;
    
    --shadow-card: 0 0.5em 1em -0.125em rgba(0,0,0,.3), 0 0 0 1px rgba(255,255,255,.05);
    --shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
    
    --accent-color: #22d3ee;
    --accent-hover: #06b6d4;
    
    --card-overlay-bg: rgba(31, 41, 64, 0.98);
}

/* Tume teema - automaatne süsteemi eelistuse järgi */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) {
        /* Bulma primary värv tumedas režiimis (navy, vastab --bg-navbar #0f3460) */
        --bulma-primary-h: 213;
        --bulma-primary-s: 73%;
        --bulma-primary-l: 22%;
        --bulma-primary-invert-l: 100%;

        --bg-primary: #1a1a2e;
        --bg-secondary: #16213e;
        --bg-card: #1f2940;
        --bg-hover: #2a3a5a;
        --bg-navbar: #0f3460;
        
        --text-primary: #e4e4e7;
        --text-secondary: #a1a1aa;
        --text-muted: #71717a;
        --text-link: #22d3ee;
        
        --border-color: #3f3f46;
        --border-light: #27272a;
        
        --shadow-card: 0 0.5em 1em -0.125em rgba(0,0,0,.3), 0 0 0 1px rgba(255,255,255,.05);
        --shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4);
        
        --accent-color: #22d3ee;
        --accent-hover: #06b6d4;
        
        --card-overlay-bg: rgba(31, 41, 64, 0.98);
    }
}

/* ========================================
   PÕHISTIILID
   ======================================== */
html {
    background: var(--bg-primary);
    transition: background-color 0.3s ease;
}

body {
    background: var(--bg-primary);
    color: var(--text-primary);
    transition: background-color 0.3s ease, color 0.3s ease;
}

/* ========================================
   KOHANDATUD KOMPONENTIDE TUMEDA TEEMA STIILID
   (Bulma 1.0.4 haldab oma komponentide dark mode'i automaatselt)
   ======================================== */

/* Tumedad ikoonid heledaks tumedas režiimis */
[data-theme="dark"] .is-dark-icon {
    color: #e4e4e7 !important;
}

/* Peidetud rakenduste sektsioon */
[data-theme="dark"] .hidden-apps-section {
    border-color: var(--border-color);
}

[data-theme="dark"] .hidden-apps-header {
    background: var(--bg-card);
}

[data-theme="dark"] .hidden-apps-header:hover {
    background: var(--bg-hover);
}

[data-theme="dark"] .hidden-apps-title {
    color: var(--text-secondary);
}

/* Grupid rakenduse stiilid */
[data-theme="dark"] .group-box,
[data-theme="dark"] .group-box.box {
    background-color: var(--bg-card);
    border-color: var(--border-color);
}

[data-theme="dark"] .names-list {
    color: var(--text-primary);
}

[data-theme="dark"] .extra-info {
    color: var(--text-muted);
}

[data-theme="dark"] #namesCount {
    color: var(--text-muted) !important;
}

[data-theme="dark"] #nameSettingsList .title {
    color: var(--text-primary);
}

[data-theme="dark"] .switch-label {
    color: var(--text-primary);
}

/* Tööjaamad */
[data-theme="dark"] .station-box,
[data-theme="dark"] .station-box.box {
    background-color: var(--bg-card);
    border-color: var(--border-color);
}
[data-theme="dark"] .station-box.is-active {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 2px rgba(34, 211, 238, 0.25);
}
[data-theme="dark"] .station-box.drag-over {
    background-color: var(--bg-hover);
    border-color: var(--accent-color);
}
[data-theme="dark"] .station-title {
    color: var(--text-primary);
}
[data-theme="dark"] .station-members .names-list {
    color: var(--text-primary);
}
[data-theme="dark"] .timer-box.box {
    background-color: var(--bg-card);
    border-color: var(--border-color);
}
[data-theme="dark"] .timer-box .time-display {
    color: var(--text-primary);
}

/* Admin paneel - kasutajate tabel */
[data-theme="dark"] .admin-user-link {
    color: var(--text-primary);
}
[data-theme="dark"] .admin-user-link:hover {
    color: var(--accent-color);
}
[data-theme="dark"] .table td,
[data-theme="dark"] .table th {
    color: var(--text-primary);
}
[data-theme="dark"] .table.is-striped tbody tr:not(.is-selected):nth-child(2n) {
    background-color: rgba(255, 255, 255, 0.03);
}
[data-theme="dark"] .table.is-hoverable tbody tr:not(.is-selected):hover {
    background-color: var(--bg-hover);
}
[data-theme="dark"] .tag.is-light {
    background-color: rgba(255, 255, 255, 0.08);
    color: var(--text-secondary);
}
[data-theme="dark"] .tag.is-success.is-light {
    background-color: rgba(72, 199, 116, 0.15);
    color: #48c774;
}
[data-theme="dark"] .tag.is-info.is-light {
    background-color: rgba(50, 152, 220, 0.15);
    color: #5fb8f0;
}
[data-theme="dark"] .tag.is-danger.is-light {
    background-color: rgba(241, 70, 104, 0.15);
    color: #f77c96;
}
[data-theme="dark"] .button.is-primary.is-outlined {
    border-color: var(--accent-color);
    color: var(--accent-color);
}
[data-theme="dark"] .button.is-primary.is-outlined:hover {
    background-color: var(--accent-color);
    color: #fff;
}
[data-theme="dark"] .button.is-danger.is-outlined {
    border-color: #f14668;
    color: #f77c96;
}
[data-theme="dark"] .button.is-danger.is-outlined:hover {
    background-color: #f14668;
    color: #fff;
}
[data-theme="dark"] .select select {
    background-color: var(--bg-card);
    color: var(--text-primary);
    border-color: var(--border-color);
}
/* Bulma 1.0 eemaldas modaali jaluse nuppude vahel automaatse margini — taasta vahe,
   et "Loo"/"Tühista" tüüpi nupud ei kleepuks kokku (mõjub kõigis rakendustes) */
.modal-card-foot {
    gap: .75rem;
}
/* Bulma 1.0 turvavõrk: nupugruppidel vahe + murdumine (väldib mobiilis kokkukleepumist
   ja üle ääre jooksmist). .has-addons jääb teadlikult ühenduvaks (gap: 0). */
.buttons {
    gap: .5rem;
}
.buttons.has-addons {
    gap: 0;
}
[data-theme="dark"] .modal-card-head,
[data-theme="dark"] .modal-card-foot {
    background-color: var(--bg-secondary);
    border-color: var(--border-color);
}
[data-theme="dark"] .modal-card-body {
    background-color: var(--bg-card);
    color: var(--text-primary);
}
[data-theme="dark"] .modal-card-title {
    color: var(--text-primary);
}
[data-theme="dark"] .modal-card-body .label {
    color: var(--text-primary);
}
[data-theme="dark"] .modal-card-body .input {
    background-color: var(--bg-secondary);
    color: var(--text-primary);
    border-color: var(--border-color);
}
[data-theme="dark"] .modal-card-body .input::placeholder {
    color: var(--text-muted);
}
[data-theme="dark"] .modal-card-body .help {
    color: var(--text-muted);
}

/* Automaatne dark mode kohandatud komponentidele */
@media (prefers-color-scheme: dark) {
    html:not([data-theme="light"]) .hidden-apps-section {
        border-color: var(--border-color);
    }

    html:not([data-theme="light"]) .hidden-apps-header {
        background: var(--bg-card);
    }

    html:not([data-theme="light"]) .hidden-apps-header:hover {
        background: var(--bg-hover);
    }

    html:not([data-theme="light"]) .hidden-apps-title {
        color: var(--text-secondary);
    }

    html:not([data-theme="light"]) .group-box,
    html:not([data-theme="light"]) .group-box.box {
        background-color: var(--bg-card);
        border-color: var(--border-color);
    }

    html:not([data-theme="light"]) .names-list {
        color: var(--text-primary);
    }

    html:not([data-theme="light"]) .extra-info {
        color: var(--text-muted);
    }

    html:not([data-theme="light"]) #namesCount {
        color: var(--text-muted) !important;
    }

    html:not([data-theme="light"]) #nameSettingsList .title {
        color: var(--text-primary);
    }

    html:not([data-theme="light"]) .switch-label {
        color: var(--text-primary);
    }

    html:not([data-theme="light"]) .station-box,
    html:not([data-theme="light"]) .station-box.box {
        background-color: var(--bg-card);
        border-color: var(--border-color);
    }
    html:not([data-theme="light"]) .station-box.is-active {
        border-color: var(--accent-color);
        box-shadow: 0 0 0 2px rgba(34, 211, 238, 0.25);
    }
    html:not([data-theme="light"]) .station-box.drag-over {
        background-color: var(--bg-hover);
        border-color: var(--accent-color);
    }
    html:not([data-theme="light"]) .station-title,
    html:not([data-theme="light"]) .station-members .names-list {
        color: var(--text-primary);
    }
    html:not([data-theme="light"]) .timer-box.box {
        background-color: var(--bg-card);
        border-color: var(--border-color);
    }
    html:not([data-theme="light"]) .timer-box .time-display {
        color: var(--text-primary);
    }

    html:not([data-theme="light"]) .toast {
        box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
    }

    /* Admin paneel */
    html:not([data-theme="light"]) .admin-user-link {
        color: var(--text-primary);
    }
    html:not([data-theme="light"]) .admin-user-link:hover {
        color: var(--accent-color);
    }
    html:not([data-theme="light"]) .table td,
    html:not([data-theme="light"]) .table th {
        color: var(--text-primary);
    }
    html:not([data-theme="light"]) .table.is-striped tbody tr:not(.is-selected):nth-child(2n) {
        background-color: rgba(255, 255, 255, 0.03);
    }
    html:not([data-theme="light"]) .table.is-hoverable tbody tr:not(.is-selected):hover {
        background-color: var(--bg-hover);
    }
    html:not([data-theme="light"]) .tag.is-light {
        background-color: rgba(255, 255, 255, 0.08);
        color: var(--text-secondary);
    }
    html:not([data-theme="light"]) .tag.is-success.is-light {
        background-color: rgba(72, 199, 116, 0.15);
        color: #48c774;
    }
    html:not([data-theme="light"]) .tag.is-info.is-light {
        background-color: rgba(50, 152, 220, 0.15);
        color: #5fb8f0;
    }
    html:not([data-theme="light"]) .tag.is-danger.is-light {
        background-color: rgba(241, 70, 104, 0.15);
        color: #f77c96;
    }
    html:not([data-theme="light"]) .button.is-primary.is-outlined {
        border-color: var(--accent-color);
        color: var(--accent-color);
    }
    html:not([data-theme="light"]) .button.is-primary.is-outlined:hover {
        background-color: var(--accent-color);
        color: #fff;
    }
    html:not([data-theme="light"]) .button.is-danger.is-outlined {
        border-color: #f14668;
        color: #f77c96;
    }
    html:not([data-theme="light"]) .button.is-danger.is-outlined:hover {
        background-color: #f14668;
        color: #fff;
    }
    html:not([data-theme="light"]) .select select {
        background-color: var(--bg-card);
        color: var(--text-primary);
        border-color: var(--border-color);
    }
    html:not([data-theme="light"]) .modal-card-head,
    html:not([data-theme="light"]) .modal-card-foot {
        background-color: var(--bg-secondary);
        border-color: var(--border-color);
    }
    html:not([data-theme="light"]) .modal-card-body {
        background-color: var(--bg-card);
        color: var(--text-primary);
    }
    html:not([data-theme="light"]) .modal-card-title {
        color: var(--text-primary);
    }
    html:not([data-theme="light"]) .modal-card-body .label {
        color: var(--text-primary);
    }
    html:not([data-theme="light"]) .modal-card-body .input {
        background-color: var(--bg-secondary);
        color: var(--text-primary);
        border-color: var(--border-color);
    }
    html:not([data-theme="light"]) .modal-card-body .input::placeholder {
        color: var(--text-muted);
    }
    html:not([data-theme="light"]) .modal-card-body .help {
        color: var(--text-muted);
    }
}

/* ========================================
   LAYOUT
   ======================================== */
@media screen and (min-width: 1024px) {
    .section {
        padding: 2rem 3rem !important;
    }
}
@media screen and (max-width: 768px) {
    .section {
        padding: 1rem 0.75rem !important;
    }
}

/* ========================================
   SWITCH STYLES
   ======================================== */
.switch {
    position: relative;
    display: inline-block;
    width: 52px;
    height: 28px;
}

.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    transition: .2s;
    border-radius: 28px;
}

.slider:before {
    position: absolute;
    content: "";
    height: 22px;
    width: 22px;
    left: 3px;
    bottom: 3px;
    background-color: white;
    transition: .2s;
    border-radius: 50%;
}

input:checked + .slider {
    background-color: #00d1b2;
}

input:checked + .slider:before {
    transform: translateX(24px); /* 52 - 22 - 6 = 24 */
}

.switch-label {
    display: flex;
    align-items: center;
    cursor: pointer;
}

/* ============================================
   GLOBAALNE TEEK (LIBRARY) — kõikidele rakendustele ühine kaardi-välimus.
   Kasutavad: kiirviktoriin, kuldvillak, klassitahvel raamatukogud.
   Tume režiim on hardcoded väärtustega, et tagada toimivus ka siis, kui
   Bulma .box klassi värvid pole tumeda režiimi jaoks õigesti seatud.
   ============================================ */
.library-grid {
    display: flex;
    gap: 1.5rem;
    align-items: flex-start;
}
.library-col {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
@media (max-width: 768px) {
    .library-grid {
        flex-direction: column;
    }
}

.library-card {
    background: var(--bg-card, #fff);
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    transition: transform 0.2s, box-shadow 0.2s;
    color: #1a1a2e;
    height: 100%;
}
.library-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
[data-theme="dark"] .library-card {
    background: #2a2a3e;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
    color: #e0e0e0;
}
[data-theme="dark"] .library-card:hover {
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}

.library-card-title {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
    line-height: 1.3;
    color: #1a1a2e;
}
[data-theme="dark"] .library-card-title {
    color: #fff;
}

.library-card-meta {
    font-size: 0.85rem;
    color: #666;
    margin-bottom: 0.5rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.6rem;
}
[data-theme="dark"] .library-card-meta {
    color: #aaa;
}
.library-card-meta .meta-sep {
    color: #ccc;
}
[data-theme="dark"] .library-card-meta .meta-sep {
    color: #555;
}

.library-card-description {
    font-size: 0.9rem;
    color: #555;
    flex: 1;
    margin-bottom: 0.75rem;
    line-height: 1.45;
}
[data-theme="dark"] .library-card-description {
    color: #bbb;
}

.library-card-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 0.75rem;
}

.library-card-actions {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}

/* ============================================
   GLOBAALNE TOAST SÜSTEEM
   ============================================ */
.toast-container {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.toast {
    padding: 0.75rem 1.25rem;
    border-radius: 6px;
    background: #363636;
    color: white;
    font-size: 0.9rem;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    animation: toastIn 0.3s ease-out;
    max-width: 350px;
}
.toast > span:first-child {
    flex: 1;
    min-width: 0;
    word-break: break-word;
}
.toast.is-warning .button {
    flex-shrink: 0;
}

/* Sulgemisnupp + klikk-sulgemine */
.toast.is-dismissible {
    cursor: pointer;
    padding-right: 2.25rem;
    position: relative;
}
.toast-close {
    position: absolute;
    top: 0.35rem;
    right: 0.4rem;
    width: 1.5rem;
    height: 1.5rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    opacity: 0.7;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 4px;
    font-size: 0.85rem;
    line-height: 1;
    transition: opacity 0.15s ease, background-color 0.15s ease;
}
.toast-close:hover {
    opacity: 1;
    background: rgba(0, 0, 0, 0.12);
}
.toast.is-warning .toast-close:hover {
    background: rgba(0, 0, 0, 0.08);
}

.toast.is-success {
    background: #48c774;
}

.toast.is-info {
    background: #3298dc;
}

.toast.is-warning {
    background: #ffdd57;
    color: #363636;
}

.toast.is-danger {
    background: #f14668;
}

.toast.fade-out {
    animation: toastOut 0.3s ease-in forwards;
}

@keyframes toastIn {
    from {
        opacity: 0;
        transform: translateX(100%);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes toastOut {
    from {
        opacity: 1;
        transform: translateX(0);
    }
    to {
        opacity: 0;
        transform: translateX(100%);
    }
}

/* Toast ikoonid */
.toast .icon {
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Dark mode toast */
[data-theme="dark"] .toast {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}

/* Mobiilil tabelid keritavad (kui pole table-container wrapperit) */
.table {
    display: table;
}
@media screen and (max-width: 768px) {
    .section .table:not(.table-container .table) {
        display: block;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* Mobiilil toast üles ja laiem */
@media screen and (max-width: 768px) {
    .toast-container {
        left: 20px;
        right: 20px;
        bottom: auto;
        top: 10px;
    }

    .toast {
        max-width: 100%;
    }

    /* Jah/Ei kinnitustoastid mobiilis allaserva (pöidla lähedale, tegevusnuppude juurde) */
    .toast.is-confirm {
        position: fixed;
        left: 20px;
        right: 20px;
        bottom: calc(env(safe-area-inset-bottom, 0px) + 20px);
        top: auto;
        margin: 0;
    }
}

/* ========================================
   SELECT DROPDOWN — keela transition'id
   ========================================
   Bulma seab .input/.select select-le transition'id border-color, box-shadow ja
   color jaoks (~86ms). Kui kasutaja klõpsab <select>-ile, käivituvad need fookuse
   muutmisega ning blokeerivad native OS dropdown popupi renderdamist 200-500ms.
   Performance trace näitab `border-*-color` ja `box-shadow` animatsioone Animations
   lõigul iga dropdown'i avamisel.
*/
.input,
.textarea,
.select select {
    transition: none !important;
}

