/* ==========================================================================
   image-sphere.css — 3D-Bilderkugel (Seite "Über mich"), Farben aus dem Theme.
   ========================================================================== */
.isph-section { position: relative; overflow: hidden; }
html.isph-lock, html.isph-lock body { overflow: hidden !important; }

.isph {
    --isph-size: 600px;
    position: relative;
    margin: 8px auto 0;
    max-width: 640px;
}

/* ---------- ohne JavaScript: einfache Bilderwand mit Links ---------- */
.isph-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.isph-node {
    display: block; width: 84px; height: 84px; border-radius: 50%; overflow: hidden;
    border: 2px solid rgba(255, 255, 255, .2);
    box-shadow: 0 10px 24px -10px rgba(0, 0, 0, .7);
    background: var(--surface, #17161b);
}
.isph-node img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; user-select: none; -webkit-user-drag: none; }
.isph-hint { display: none; }

/* ---------- 3D-Kugel (JavaScript aktiv) ---------- */
.isph.is-3d {
    width: min(100%, var(--isph-size));
    height: var(--isph-size);
    touch-action: pan-y;            /* senkrecht scrollt die Seite weiter, waagerecht dreht die Kugel */
    cursor: grab;
    user-select: none; -webkit-user-select: none;
}
.isph.is-3d.is-dragging { cursor: grabbing; }
.isph.is-3d::before {               /* weicher Lichthof hinter der Kugel */
    content: ""; position: absolute; inset: 12%; border-radius: 50%; pointer-events: none;
    background: radial-gradient(circle, color-mix(in srgb, var(--accent, #b775ff) 22%, transparent), transparent 70%);
    filter: blur(20px);
}
.isph.is-3d .isph-list { display: block; position: absolute; inset: 0; }
.isph.is-3d .isph-li { display: contents; }
.isph.is-3d .isph-node {
    position: absolute; left: 0; top: 0;
    transform-origin: 50% 50%;
    will-change: transform, opacity;
    transition: box-shadow .2s ease, border-color .2s ease;
}
.isph.is-3d .isph-node img { transition: transform .25s ease; }
.isph.is-3d .isph-node:hover { border-color: var(--accent, #b775ff); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #b775ff) 35%, transparent), 0 14px 30px -10px rgba(0, 0, 0, .8); }
.isph.is-3d .isph-node:hover img { transform: scale(1.12); }
.isph.is-3d .isph-node.is-back { pointer-events: none; }
.isph-node:focus-visible { outline: 3px solid var(--accent, #b775ff); outline-offset: 3px; opacity: 1 !important; }
.isph.is-3d .isph-hint {
    display: inline-flex; align-items: center; gap: 8px;
    position: absolute; left: 50%; bottom: -6px; transform: translateX(-50%);
    margin: 0; font-size: .8rem; letter-spacing: .04em; color: var(--text-muted, #a1a1aa);
    pointer-events: none; white-space: nowrap;
}

/* ---------- Karte ---------- */
.isph-modal { position: fixed; inset: 0; z-index: 2147482000; display: grid; place-items: center; padding: 16px; opacity: 0; transition: opacity .22s ease; }
.isph-modal[hidden] { display: none; }
.isph-modal.is-open { opacity: 1; }
.isph-backdrop { position: absolute; inset: 0; background: rgba(6, 5, 9, .72); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.isph-card {
    position: relative; width: min(460px, 100%); max-height: calc(100dvh - 32px); overflow: auto;
    border-radius: 20px; background: var(--surface, #17161b); color: var(--text, #f4f4f6);
    border: 1px solid var(--border, rgba(255, 255, 255, .08));
    box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .85);
    transform: scale(.92) translateY(8px); transition: transform .26s cubic-bezier(.16, 1, .3, 1);
}
.isph-modal.is-open .isph-card { transform: none; }
.isph-media { position: relative; aspect-ratio: 16 / 10; background: #0b0a0e; }
.isph-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.isph-close {
    position: absolute; top: 10px; right: 10px; width: 40px; height: 40px; border-radius: 50%;
    display: grid; place-items: center; border: 1px solid rgba(255, 255, 255, .2);
    background: rgba(0, 0, 0, .55); color: #fff; cursor: pointer;
    -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); transition: background-color .2s ease;
}
.isph-close:hover { background: rgba(0, 0, 0, .8); }
.isph-close:focus-visible, .isph-link:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.isph-body { padding: 20px 22px 22px; }
.isph-kind {
    display: inline-block; font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em;
    color: var(--accent, #b775ff); margin-bottom: 8px;
}
.isph-title { font-size: 1.25rem; line-height: 1.3; margin: 0 0 8px; color: var(--text, #f4f4f6); }
.isph-text { margin: 0 0 18px; color: var(--text-muted, #a1a1aa); line-height: 1.65; font-size: .95rem; }
.isph-link { text-decoration: none; }

@media (max-width: 575.98px) {
    .isph.is-3d .isph-hint { bottom: -2px; }
}
@media (prefers-reduced-motion: reduce) {
    .isph-modal, .isph-card, .isph.is-3d .isph-node img { transition: none; }
}

/* ---------- Variante "Technologien & Sprachen": Symbole statt Fotos ---------- */
.isph-tech .isph-node {
    display: grid; place-items: center;
    background: radial-gradient(circle at 35% 30%, #ffffff, #e9e6f2);
    border-color: rgba(255, 255, 255, .35);
}
.isph-tech .isph-node img { width: 66%; height: 66%; object-fit: contain; }
.isph-tech .isph-ini {
    font-weight: 800; font-size: clamp(.8rem, 2.4vw, 1.15rem); letter-spacing: .02em; line-height: 1;
    color: var(--accent, #7c3aed); text-transform: none; user-select: none; pointer-events: none;
}
.isph-tech .isph-media {
    aspect-ratio: auto; height: 190px; display: grid; place-items: center;
    background: radial-gradient(circle at 50% 35%, color-mix(in srgb, var(--accent, #b775ff) 30%, #1b1a21), #0b0a0e 75%);
}
.isph-tech .isph-media .isph-m-img {
    width: 112px; height: 112px; object-fit: contain; padding: 18px; border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, #ffffff, #e9e6f2);
    box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .8);
}
.isph-tech .isph-m-ini {
    width: 112px; height: 112px; border-radius: 50%; display: grid; place-items: center;
    font-weight: 800; font-size: 2rem; color: var(--accent, #7c3aed);
    background: radial-gradient(circle at 35% 30%, #ffffff, #e9e6f2);
    box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .8);
}
.isph-m-ini[hidden], .isph-m-img[hidden], .isph-link[hidden] { display: none !important; }
.isph-tech .isph-m-kind { text-transform: none; letter-spacing: .02em; font-size: .82rem; }
.isph-tech .isph-node .isph-dev { font-size: calc(var(--isph-node, 84px) * .54); line-height: 1; pointer-events: none; }
.isph-tech .isph-m-dev {
    width: 112px; height: 112px; border-radius: 50%; display: grid; place-items: center;
    background: radial-gradient(circle at 35% 30%, #ffffff, #e9e6f2);
    box-shadow: 0 18px 40px -12px rgba(0, 0, 0, .8);
}
.isph-tech .isph-m-dev .isph-dev { font-size: 64px; }
.isph-m-dev[hidden] { display: none !important; }

