/* =========================================================
   Skill Tandem – UI Enhancements
   - Toast-Container
   - Profil-Card-Hover
   ========================================================= */

/* --------- iOS Safari: kein horizontaler Scroll --------- */
html, body {
    max-width: 100%;
}
body {
    /* iOS erlaubt nur vertikale Touch-Scrolls → verhindert horizontales Wischen */
    overscroll-behavior-x: none;
}
#main {
    overflow-x: hidden;
    max-width: 100%;
}
@media (max-width: 1199px) {
    /* Off-canvas Panels dürfen nicht in die Layoutbreite zählen */
    .tools-panel,
    #filterPanel {
        max-width: 100vw;
    }
}

/* --------- Toast Container (rechts unten, above everything) --------- */
.st-toast-container {
    position: fixed;
    bottom: 1.25rem;
    right: 1.25rem;
    z-index: 1080;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    pointer-events: none;
}
.st-toast-container .toast {
    pointer-events: auto;
    min-width: 280px;
    max-width: 380px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .12);
    border: 0;
    border-radius: .75rem;
    overflow: hidden;
}
.st-toast-container .toast .toast-body {
    padding: .9rem 1rem;
    display: flex;
    align-items: center;
    gap: .6rem;
    font-weight: 500;
}
.st-toast-container .toast .toast-body i {
    font-size: 1.25rem;
    flex-shrink: 0;
}
.st-toast-container .toast .btn-close {
    margin-right: .5rem;
    filter: brightness(10);
    opacity: .9;
}
.st-toast-container .toast.bg-success,
.st-toast-container .toast.bg-danger,
.st-toast-container .toast.bg-warning,
.st-toast-container .toast.bg-info,
.st-toast-container .toast.bg-primary {
    color: #fff;
}
.st-toast-container .toast.bg-warning {
    color: #3d2a00;
}

/* --------- Profil-Card Hover (stepform Cards) --------- */
.card.mb-3 {
    transition: transform .22s ease, box-shadow .22s ease;
    will-change: transform;
}
.card.mb-3:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px rgba(1, 41, 112, .12);
}

/* --------- Button Hover Animations --------- */
.btn-primary,
.btn-outline-primary,
.btn-success,
.btn-outline-success,
.btn-secondary,
.btn-outline-secondary,
.btn-danger,
.btn-outline-danger {
    transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, color .18s ease;
}
.btn-primary:hover,
.btn-success:hover,
.btn-danger:hover,
.btn-secondary:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(1, 41, 112, .18);
}
.btn-outline-primary:hover,
.btn-outline-success:hover,
.btn-outline-danger:hover,
.btn-outline-secondary:hover {
    transform: translateY(-1px);
}
.btn:active {
    transform: translateY(0) !important;
}

/* --------- Branded Focus Rings (accessibility) --------- */
:root {
    --st-focus: #47b2e4;
}
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.form-control:focus-visible,
.form-select:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--st-focus) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 4px rgba(71, 178, 228, .18) !important;
    border-radius: 4px;
}
.btn:focus-visible {
    border-radius: inherit;
}
/* Remove ugly default focus on mouse click (keep keyboard focus visible) */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
.btn:focus:not(:focus-visible) {
    outline: none;
    box-shadow: none;
}

/* --------- Smooth Page Transitions --------- */
@keyframes st-page-fade-in {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}
main,
#main {
    animation: st-page-fade-in .28s ease both;
}
@media (prefers-reduced-motion: reduce) {
    main,
    #main {
        animation: none;
    }
}

/* --------- Form Validation Feedback (inline) --------- */
.form-control.is-invalid,
.form-select.is-invalid {
    border-color: #dc3545 !important;
    padding-right: calc(1.5em + .75rem);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .75rem center;
    background-size: calc(.75em + .375rem) calc(.75em + .375rem);
}
.form-control.is-valid,
.form-select.is-valid {
    border-color: #198754 !important;
}
.invalid-feedback {
    display: block;
    color: #dc3545;
    font-size: .85em;
    margin-top: .25rem;
}

/* --------- Skeleton Loading (Filter) --------- */
.st-skeleton-card {
    background: #fff;
    border: 1px solid #eef2f7;
    border-radius: .5rem;
    padding: 1rem;
    margin-bottom: 1rem;
    display: flex;
    gap: 1rem;
    max-width: 1000px;
}
.st-skeleton-card .sk-img {
    flex-shrink: 0;
    width: 150px;
    height: 150px;
    border-radius: .375rem;
}
.st-skeleton-card .sk-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: .6rem;
}
.st-skeleton-line {
    background: linear-gradient(90deg, #eef2f7 0%, #f7fafd 50%, #eef2f7 100%);
    background-size: 200% 100%;
    animation: st-skel-shimmer 1.3s ease-in-out infinite;
    border-radius: .25rem;
    height: .9rem;
}
.st-skeleton-line.sk-lg { height: 1.25rem; width: 60%; }
.st-skeleton-line.sk-md { width: 85%; }
.st-skeleton-line.sk-sm { width: 45%; }
.st-skeleton-card .sk-img {
    background: linear-gradient(90deg, #eef2f7 0%, #f7fafd 50%, #eef2f7 100%);
    background-size: 200% 100%;
    animation: st-skel-shimmer 1.3s ease-in-out infinite;
}
@keyframes st-skel-shimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* --------- Recently Viewed Profiles --------- */
.st-recent-viewed {
    margin-bottom: 1.25rem;
    padding: 1rem;
    background: #f5f8fc;
    border-radius: .6rem;
    border: 1px solid #e2e8f0;
}
.st-recent-viewed-title {
    font-size: .85rem;
    font-weight: 700;
    color: #012970;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .75rem;
    display: flex;
    align-items: center;
    gap: .4rem;
}
.st-recent-viewed-list {
    display: flex;
    gap: .75rem;
    overflow-x: auto;
    padding-bottom: .25rem;
    scrollbar-width: thin;
}
.st-recent-viewed-item {
    flex-shrink: 0;
    width: 72px;
    text-align: center;
    text-decoration: none;
    color: inherit;
    transition: transform .18s ease;
}
.st-recent-viewed-item:hover {
    transform: translateY(-2px);
    color: #012970;
}
.st-recent-viewed-item img {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #fff;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .08);
}
.st-recent-viewed-item span {
    display: block;
    font-size: .75rem;
    margin-top: .35rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

