/* =============================================================================
   Mentifyll — Beállítások panelek (Én fül) és Tankönyv-kezelő (v0.10.0)
   Csak CSS-változókat használ, így sötét és világos témában is olvasható.
   ============================================================================= */

/* ---------- Én fül: alkalmazás- és megjelenés-beállítások ---------- */
.set-block {
    padding: 14px 0;
    border-top: 1px solid var(--color-border);
}

.set-block:first-of-type {
    border-top: 0;
    padding-top: 6px;
}

.set-block h4 {
    margin: 0 0 10px;
    font-size: 0.98rem;
    color: var(--color-card-title);
}

.pwa-status {
    padding: 12px 14px;
    border-radius: var(--radius-md);
    background: var(--info-bg);
    color: var(--color-card-text);
    border: 1px solid var(--info-border);
    font-size: 0.9rem;
    line-height: 1.5;
}

.pwa-status.is-ok {
    background: var(--success-bg);
    border-color: var(--success-border);
}

.pwa-status.is-warn {
    background: var(--warning-bg);
    border-color: var(--warning-border);
    color: var(--warning-fg);
}

.pwa-status a {
    color: inherit;
    font-weight: 700;
    text-decoration: underline;
}

.seg {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 4px;
    border-radius: var(--radius-md);
    background: var(--color-surface-variant);
    border: 1px solid var(--color-border);
    width: fit-content;
    max-width: 100%;
}

.seg-btn {
    min-height: 40px;
    padding: 6px 14px;
    border-radius: var(--radius-sm);
    border: 1px solid transparent;
    background: transparent;
    color: var(--color-card-text);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

.seg-btn:hover {
    background: var(--color-surface-hover);
}

.seg-btn.active {
    background: var(--btn-primary-bg, var(--color-primary));
    color: var(--on-primary, #fff);
}

.seg-sm .seg-btn {
    min-height: 36px;
    padding: 4px 12px;
}

.set-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 12px;
    color: var(--color-card-text);
    font-size: 0.92rem;
}

.swatches {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.swatch {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 3px solid transparent;
    background: var(--sw, #2dd4bf);
    cursor: pointer;
    box-shadow: 0 0 0 1px var(--color-border);
}

.swatch.active {
    border-color: var(--color-surface);
    box-shadow: 0 0 0 3px var(--sw, #2dd4bf);
}

.set-switch {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
    min-height: 40px;
    color: var(--color-card-text);
    font-size: 0.92rem;
    cursor: pointer;
}

.set-switch input {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    accent-color: var(--btn-primary-bg, var(--color-primary));
}

/* ---------- Tankönyv-kezelő (Beállítások → Tankönyvek) ---------- */
.tb-admin {
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.tb-howto {
    border: 1px solid var(--info-border);
    background: var(--info-bg);
    border-radius: var(--radius-md);
    padding: 12px 16px;
    color: var(--color-card-text);
    font-size: 0.9rem;
    line-height: 1.55;
}

.tb-howto summary {
    cursor: pointer;
    font-weight: 700;
    color: var(--color-card-title);
}

.tb-howto ol {
    margin: 8px 0 0;
    padding-left: 20px;
}

.tb-banner {
    padding: 12px 16px;
    border-radius: var(--radius-md);
    border: 1px solid var(--warning-border);
    background: var(--warning-bg);
    color: var(--warning-fg);
    font-size: 0.92rem;
    line-height: 1.5;
}

.tb-section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}

.tb-section-head h3 {
    margin: 0;
    font-size: 1.05rem;
    color: var(--color-card-title);
}

.tb-books {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
    gap: 14px;
}

.tb-book,
.tb-job {
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}

.tb-book-head {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

.tb-book-icon {
    width: 44px;
    height: 44px;
    flex: 0 0 auto;
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    background: var(--color-surface-variant);
}

.tb-book h4,
.tb-job h4 {
    margin: 0;
    font-size: 1rem;
    color: var(--color-card-title);
    overflow-wrap: anywhere;
}

.tb-meta {
    margin: 2px 0 0;
    font-size: 0.82rem;
    color: var(--color-text-muted);
}

.tb-bar {
    height: 10px;
    border-radius: var(--radius-full);
    background: var(--color-surface-variant);
    overflow: hidden;
    border: 1px solid var(--color-border);
}

.tb-bar > span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--btn-primary-bg, var(--color-primary));
    transition: width 0.4s ease;
}

.tb-bar.is-indeterminate > span {
    width: 35% !important;
    animation: tb-slide 1.4s ease-in-out infinite;
}

@keyframes tb-slide {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(300%); }
}

.tb-line {
    font-size: 0.88rem;
    color: var(--color-card-text);
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.tb-line strong {
    color: var(--color-card-title);
}

.tb-pdf {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    width: fit-content;
    max-width: 100%;
    padding: 4px 10px;
    border-radius: var(--radius-full);
    font-size: 0.8rem;
    font-weight: 700;
    border: 1px solid var(--success-border);
    background: var(--success-bg);
    color: var(--success-fg);
}

.tb-pdf.is-missing {
    border-color: var(--warning-border);
    background: var(--warning-bg);
    color: var(--warning-fg);
}

.tb-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: auto;
}

.tb-actions .btn {
    width: auto;
    min-height: 40px;
}

.tb-upload {
    display: none;
    flex-direction: column;
    gap: 4px;
    font-size: 0.82rem;
    color: var(--color-text-muted);
}

.tb-upload.is-active {
    display: flex;
}

.tb-job-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
}

.tb-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    border-radius: var(--radius-full);
    font-size: 0.78rem;
    font-weight: 700;
    border: 1px solid var(--info-border);
    background: var(--info-bg);
    color: var(--info-fg);
    white-space: nowrap;
}

.tb-chip.is-done {
    border-color: var(--success-border);
    background: var(--success-bg);
    color: var(--success-fg);
}

.tb-chip.is-failed {
    border-color: var(--danger-border);
    background: var(--danger-bg);
    color: var(--danger-fg);
}

.tb-chip.is-muted {
    border-color: var(--color-border);
    background: var(--color-surface-variant);
    color: var(--color-card-text);
}

.tb-log summary {
    cursor: pointer;
    font-size: 0.82rem;
    color: var(--color-text-muted);
}

.tb-log pre {
    margin: 6px 0 0;
    max-height: 200px;
    overflow: auto;
    padding: 10px;
    border-radius: var(--radius-sm);
    background: var(--input-bg);
    color: var(--color-card-text);
    border: 1px solid var(--color-border);
    font-size: 0.75rem;
    line-height: 1.45;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.tb-history {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.tb-hrow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-surface);
}

.tb-hrow .tb-line {
    flex: 1 1 220px;
    min-width: 0;
}

.tb-hrow .btn {
    width: auto;
    min-height: 36px;
}

.tb-empty {
    padding: 22px;
    text-align: center;
    color: var(--color-text-muted);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius-lg);
}

/* Párbeszédablak */
.tb-modal {
    max-width: 520px;
    width: 100%;
    max-height: 92vh;
    overflow-y: auto;
    box-shadow: var(--shadow-lg);
}

.tb-modal-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 8px;
}

.tb-modal-head h3 {
    margin: 0;
    font-size: 1.1rem;
    color: var(--color-card-title);
}

.tb-grid2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.tb-field {
    margin-top: 12px;
}

.tb-field .form-label {
    display: block;
    margin-bottom: 4px;
}

.tb-hint {
    margin: 4px 0 0;
    font-size: 0.8rem;
    color: var(--color-text-muted);
    line-height: 1.4;
}

.tb-summary {
    margin-top: 14px;
    padding: 10px 14px;
    border-radius: var(--radius-md);
    background: var(--color-surface-variant);
    border: 1px solid var(--color-border);
    font-size: 0.88rem;
    color: var(--color-card-text);
    line-height: 1.5;
}

.tb-summary.is-warn {
    background: var(--warning-bg);
    border-color: var(--warning-border);
    color: var(--warning-fg);
}

.tb-modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 16px;
}

.tb-modal-actions .btn {
    width: auto;
    min-height: 44px;
}

@media (max-width: 520px) {
    .tb-grid2 {
        grid-template-columns: 1fr;
    }

    .tb-modal-actions .btn {
        flex: 1 1 140px;
    }
}

/* ---------- Ma: Most / Következő óra + közelgő számonkérések ---------- */
.nowcard {
    display: grid;
    gap: 14px;
    margin: 14px 0;
    border-left: 5px solid var(--subj, var(--color-primary));
}

.nowcard-main {
    min-width: 0;
    --subj: var(--color-primary);
}

.nowcard-label {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    color: var(--color-text-muted);
}

.nowcard-title {
    margin: 2px 0;
    font-size: 1.2rem;
    font-weight: 800;
    color: var(--color-card-title);
    overflow-wrap: anywhere;
}

.nowcard-sub {
    margin-bottom: 8px;
    font-size: 0.9rem;
    color: var(--color-card-text);
}

.nowcard-exams ul {
    margin: 6px 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 6px;
}

.nowcard-exams li {
    display: flex;
    gap: 10px;
    align-items: baseline;
    flex-wrap: wrap;
    padding: 8px 12px;
    border-radius: var(--radius-sm);
    background: var(--color-surface-variant);
    border: 1px solid var(--color-border);
    font-size: 0.9rem;
    color: var(--color-card-text);
}

.nowcard-exams li.is-soon {
    background: var(--warning-bg);
    border-color: var(--warning-border);
    color: var(--warning-fg);
}

.nowcard-when {
    min-width: 6.5em;
    font-weight: 800;
}

.nowcard-link {
    width: fit-content;
}

/* Naptár: a zajló óra haladás-sávja */
.cal-item.is-now {
    position: relative;
    overflow: hidden;
}

.cal-item.is-now::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    height: 4px;
    width: var(--now-pct, 0%);
    background: var(--subj, var(--color-primary));
    border-radius: 0 4px 0 0;
}

.cal-tool-btn {
    width: auto;
}

/* ---------- Parancspaletta és billentyű-súgó ---------- */
.cmdk-backdrop {
    position: fixed;
    inset: 0;
    z-index: 2300;
    background: rgba(0, 0, 0, 0.6);
    backdrop-filter: blur(3px);
    align-items: flex-start;
    justify-content: center;
    padding: 12vh 16px 16px;
}

.cmdk-panel {
    width: 100%;
    max-width: 600px;
    max-height: 70vh;
    display: flex;
    flex-direction: column;
    border-radius: var(--radius-lg);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    box-shadow: var(--shadow-lg);
    overflow: hidden;
}

.cmdk-input {
    width: 100%;
    padding: 16px 18px;
    border: 0;
    border-bottom: 1px solid var(--color-border);
    background: transparent;
    color: var(--color-text-main);
    font: inherit;
    font-size: 1.05rem;
    outline: none;
}

.cmdk-input::placeholder {
    color: var(--color-text-muted);
}

.cmdk-list {
    overflow-y: auto;
    padding: 8px;
}

.cmdk-group {
    padding: 10px 10px 4px;
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.cmdk-item {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    min-height: 44px;
    padding: 8px 12px;
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--color-text-main);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.cmdk-item.is-sel {
    background: var(--btn-primary-bg, var(--color-primary));
    color: var(--on-primary, #fff);
}

.cmdk-icon {
    width: 1.6em;
    text-align: center;
    flex: 0 0 auto;
}

.cmdk-label {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: anywhere;
}

.cmdk-label small {
    display: block;
    opacity: 0.8;
    font-size: 0.78rem;
}

.cmdk-item kbd,
.kbd-table kbd {
    padding: 2px 7px;
    border-radius: 6px;
    border: 1px solid var(--color-border);
    background: var(--color-surface-variant);
    color: var(--color-card-text);
    font: inherit;
    font-size: 0.75rem;
    font-weight: 700;
}

.cmdk-item.is-sel kbd {
    background: rgba(255, 255, 255, 0.2);
    color: inherit;
    border-color: rgba(255, 255, 255, 0.4);
}

.cmdk-empty {
    padding: 22px;
    text-align: center;
    color: var(--color-text-muted);
}

.cmdk-foot {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    padding: 10px 16px;
    border-top: 1px solid var(--color-border);
    font-size: 0.75rem;
    color: var(--color-text-muted);
}

.kbd-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
    color: var(--color-card-text);
}

.kbd-table td {
    padding: 8px 6px;
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}

.kbd-table td:first-child {
    white-space: nowrap;
}

/* Kedvenc tantárgy csillag */
.fav-star {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1px solid var(--color-border);
    background: var(--color-surface);
    color: var(--color-text-muted);
    font-size: 1.15rem;
    line-height: 1;
    cursor: pointer;
}

.fav-star:hover {
    border-color: var(--color-yellow, #f59e0b);
}

.fav-star.is-fav {
    color: #b45309;
    background: var(--warning-bg);
    border-color: var(--warning-border);
}

html.theme-dark .fav-star.is-fav,
html.theme-dark body .fav-star.is-fav {
    color: #fbbf24;
}

/* Fejlécbeli keresés gomb: csak asztali nézetben */
.cmdk-btn {
    display: none;
}

@media (min-width: 768px) {
    .cmdk-btn {
        display: inline-flex;
    }
}

/* Órarend nyomtatása: csak a naptár */
@media print {
    body.printing-timetable .app-header,
    body.printing-timetable header,
    body.printing-timetable nav,
    body.printing-timetable footer,
    body.printing-timetable .cal-controls,
    body.printing-timetable .cal-day-pills,
    body.printing-timetable .cal-legend,
    body.printing-timetable .cal-item-actions,
    body.printing-timetable #toast-container,
    body.printing-timetable .toast-stack-container {
        display: none !important;
    }

    body.printing-timetable .tab-view:not(#tab-timetable) {
        display: none !important;
    }

    body.printing-timetable #tab-timetable {
        display: block !important;
    }

    body.printing-timetable,
    body.printing-timetable .app-content {
        background: #fff !important;
        color: #000 !important;
    }

    body.printing-timetable .cal-grid {
        display: grid !important;
        grid-template-columns: repeat(5, 1fr) !important;
        gap: 6px !important;
    }

    body.printing-timetable .cal-day {
        break-inside: avoid;
        border: 1px solid #999 !important;
        background: #fff !important;
        color: #000 !important;
    }

    body.printing-timetable .cal-item,
    body.printing-timetable .cal-title,
    body.printing-timetable .cal-time,
    body.printing-timetable .cal-meta,
    body.printing-timetable .cal-day-head {
        color: #000 !important;
    }
}
