@import url('../css/variables.css?v=2');

/* ===================================================================
   Fahrlehrer – Character Select  ✦  Adult Anime / JRPG Style
   =================================================================== */

:root {
    --a-cyan:   #22D3EE;
    --a-teal:   #0891B2;
    --a-gold:   #F59E0B;
    --a-purple: #7C3AED;
    --a-dark:   #080E1A;
    --a-card:   rgba(255,255,255,0.04);
}

/* ── Arena ────────────────────────────────────────────────── */
.fl-arena {
    position: relative;
    width: 100%;
    overflow: hidden;
    padding: 5rem 1.25rem 5.5rem;
    background:
        radial-gradient(900px 600px at 15% 20%, rgba(34,211,238,.10), transparent 65%),
        radial-gradient(700px 500px at 85% 75%, rgba(124,58,237,.14), transparent 60%),
        linear-gradient(170deg, #060C18 0%, #0D1829 55%, #07101F 100%);
    color: #fff;
    text-align: center;
    isolation: isolate;
}

/* diagonal speed-lines – anime energy feel */
.fl-arena__bg {
    position: absolute;
    inset: -2px;
    z-index: -2;
    background-image:
        repeating-linear-gradient(
            -55deg,
            rgba(34,211,238,.028) 0px, rgba(34,211,238,.028) 1px,
            transparent 1px, transparent 38px
        ),
        radial-gradient(circle, rgba(34,211,238,.4) 1px, transparent 1px);
    background-size: 100% 100%, 80px 80px;
    background-position: 0 0, 0 0;
    mask-image: radial-gradient(ellipse 80% 70% at 50% 40%, #000 0%, transparent 100%);
    -webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 40%, #000 0%, transparent 100%);
    animation: flLineDrift 30s linear infinite;
}
@keyframes flLineDrift { to { background-position: 0 0, 80px 80px; } }

/* ambient glows */
.fl-arena::before,
.fl-arena::after {
    content: '';
    position: absolute;
    z-index: -1;
    border-radius: 50%;
    filter: blur(100px);
    opacity: .45;
    pointer-events: none;
}
.fl-arena::before {
    width: 500px; height: 420px;
    background: rgba(34,211,238,.18);
    top: -140px; left: -100px;
    animation: flFloat 15s ease-in-out infinite;
}
.fl-arena::after {
    width: 440px; height: 380px;
    background: rgba(124,58,237,.22);
    bottom: -160px; right: -80px;
    animation: flFloat 19s ease-in-out infinite reverse;
}
@keyframes flFloat { 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(36px); } }

/* ── Header ───────────────────────────────────────────────── */
.fl-arena__head { max-width: 760px; margin: 0 auto 2.4rem; position: relative; }

.fl-arena__kicker {
    display: inline-flex; align-items: center; gap: .55rem;
    font-size: .72rem; font-weight: 800; letter-spacing: .26em;
    text-transform: uppercase; color: var(--a-cyan);
    padding: .38rem 1.1rem; border-radius: 999px;
    border: 1.5px solid rgba(34,211,238,.4);
    background: rgba(34,211,238,.07);
    box-shadow: 0 0 22px rgba(34,211,238,.15) inset;
}
.fl-arena__kicker::before {
    content: '';
    width: 7px; height: 7px; border-radius: 50%;
    background: var(--a-cyan);
    box-shadow: 0 0 10px var(--a-cyan);
    animation: flBlink 1.4s ease-in-out infinite;
}
@keyframes flBlink { 0%,100%{opacity:1;} 50%{opacity:.2;} }

.fl-arena__title {
    font-size: clamp(1.9rem, 4.5vw, 2.9rem);
    font-weight: 900; line-height: 1.05; margin: 1rem 0 .6rem;
    text-shadow: 0 0 36px rgba(34,211,238,.3), 0 2px 0 rgba(0,0,0,.5);
}
.fl-arena__sub { font-size: .95rem; color: rgba(255,255,255,.55); margin: 0; }

/* ── Stage ────────────────────────────────────────────────── */
.fl-stage {
    position: relative;
    max-width: 880px; margin: 0 auto 2.2rem;
    display: grid; grid-template-columns: 1.25fr .95fr;
    gap: 1.5rem; align-items: center;
}

.fl-scene {
    position: relative; height: 360px;
    border-radius: 1.75rem;
    background: linear-gradient(180deg, rgba(34,211,238,.07) 0%, rgba(255,255,255,.02) 100%);
    border: 1.5px solid rgba(34,211,238,.22);
    box-shadow: 0 0 0 4px rgba(34,211,238,.05), 0 20px 52px rgba(0,0,0,.6);
    overflow: hidden;
}
.fl-scene::after {
    content:''; position:absolute; inset:0; pointer-events:none;
    background: repeating-linear-gradient(0deg, rgba(255,255,255,.022) 0 1px, transparent 1px 3px);
    mix-blend-mode: overlay; opacity:.7;
}

/* platform glow */
.fl-stage__platform {
    position:absolute; left:50%; bottom:28px; transform:translateX(-50%);
    width:72%; height:28px; border-radius:50%;
    background:radial-gradient(ellipse at center, rgba(34,211,238,.6), rgba(34,211,238,.04) 70%);
    filter:blur(3px);
    animation:flPulse 3s ease-in-out infinite;
}
@keyframes flPulse { 0%,100%{opacity:.7; transform:translateX(-50%) scale(1);} 50%{opacity:1; transform:translateX(-50%) scale(1.06);} }

/* ── Background characters ────────────────────────────────── */
.fl-bg-char {
    position:absolute; bottom:36px; width:auto;
    object-fit:cover; border-radius:10px;
    z-index:0; pointer-events:none; transition:opacity .7s ease;
}

/* halo */
.fl-scene__halo {
    position:absolute; left:50%; top:47%; transform:translate(-50%,-50%);
    width:240px; height:240px; border-radius:50%;
    background:radial-gradient(circle, rgba(34,211,238,.22), rgba(124,58,237,.08) 55%, transparent 75%);
    transition:opacity .5s ease;
}

.fl-scene__person {
    position:absolute; left:50%; bottom:36px; transform:translateX(-50%);
    height:300px; width:auto; max-width:78%;
    object-fit:cover; border-radius:16px;
    border:2px solid rgba(34,211,238,.5);
    box-shadow:0 18px 32px rgba(0,0,0,.6), 0 0 28px rgba(34,211,238,.2);
    transition:transform .75s cubic-bezier(.34,1.4,.64,1), opacity .5s ease;
    z-index:2; will-change:transform,opacity;
}
.fl-scene__person.is-swapping { opacity:0; transform:translateX(-50%) translateY(14px) scale(.95); }

.fl-scene__car {
    position:absolute; left:50%; bottom:44px; transform:translate(150%,0) scale(.92);
    width:56%; max-width:340px; opacity:0;
    transition:transform .85s cubic-bezier(.34,1.4,.64,1), opacity .5s ease;
    z-index:1; will-change:transform,opacity;
}
.fl-scene__car svg { width:100%; height:auto; display:block; filter:drop-shadow(0 14px 20px rgba(0,0,0,.55)); }
.fl-scene__car.has-photo { width:82%; max-width:none; bottom:28px; }
.fl-scene__car .fl-car-photo {
    width:100%; height:auto; display:block; object-fit:contain;
    filter:drop-shadow(0 16px 28px rgba(0,0,0,.75));
}

/* ── Phasen ───────────────────────────────────────────────── */
.fl-scene.is-phase-1 .fl-scene__person { transform:translateX(-50%) scale(1); opacity:1; }
.fl-scene.is-phase-1 .fl-scene__car    { transform:translate(150%,0) scale(.92); opacity:0; }
.fl-scene.is-phase-2 .fl-scene__person { transform:translateX(-104%) scale(.98); opacity:1; }
.fl-scene.is-phase-2 .fl-scene__car    { transform:translate(8%,0) scale(1); opacity:1; }
.fl-scene.is-phase-2 .fl-scene__person.has-photo-mode { transform:translateX(-90%) scale(.9); opacity:1; }
.fl-scene.is-phase-2 .fl-scene__car.has-photo         { transform:translate(-50%,0) scale(1); opacity:1; }
.fl-scene.is-phase-3 .fl-scene__person { transform:translateX(-185%) scale(.9); opacity:0; }
.fl-scene.is-phase-3 .fl-scene__car    { transform:translate(-50%,0) scale(1.06); opacity:1; }
.fl-scene.is-phase-3 .fl-scene__car.has-photo { transform:translate(-50%,0) scale(1.04); }

/* ── Scene-Pfeile ─────────────────────────────────────────── */
.fl-scene__nav {
    position:absolute; top:50%; transform:translateY(-50%);
    z-index:10; width:38px; height:38px; border-radius:50%;
    background:rgba(34,211,238,.1);
    border:1.5px solid rgba(34,211,238,.35);
    color:var(--a-cyan); font-size:1.5rem; line-height:1;
    display:flex; align-items:center; justify-content:center;
    cursor:pointer; backdrop-filter:blur(4px); padding:0;
    transition:background .2s, transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .2s;
}
.fl-scene__nav--prev { left:10px; }
.fl-scene__nav--next { right:10px; }
.fl-scene__nav:hover {
    background:rgba(34,211,238,.25);
    border-color:var(--a-cyan);
    transform:translateY(-50%) scale(1.15);
    box-shadow:0 0 18px rgba(34,211,238,.4);
}
.fl-scene__nav:active { transform:translateY(-50%) scale(.92); }

.fl-wheel { transform-box:fill-box; transform-origin:center; }
.fl-scene.is-phase-2 .fl-wheel,
.fl-scene.is-phase-3 .fl-wheel { animation:flSpin .9s linear infinite; }
@keyframes flSpin { to { transform:rotate(360deg); } }

/* ── Info-Panel ───────────────────────────────────────────── */
.fl-stage__panel {
    text-align:left; padding:1.4rem 1.5rem;
    border-radius:1.4rem;
    background:linear-gradient(160deg, rgba(34,211,238,.07), rgba(255,255,255,.02));
    border:1.5px solid rgba(34,211,238,.18);
    box-shadow:0 0 40px rgba(0,0,0,.3);
    backdrop-filter:blur(6px);
}
.fl-rating { display:flex; align-items:center; gap:.5rem; margin-bottom:.7rem; }
.fl-rating__stars { display:inline-flex; gap:2px; color:#F59E0B; font-size:1rem; }
.fl-rating__stars i.dim { color:rgba(255,255,255,.2); }
.fl-rating__val { font-size:.85rem; font-weight:800; color:#FCD34D; }
.fl-rating__label { font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.38); margin-left:.15rem; }

.fl-stage__name {
    font-size:clamp(1.4rem,3vw,1.9rem); font-weight:900; margin:0 0 .25rem;
    animation:flNameIn .5s cubic-bezier(.34,1.4,.64,1) both;
    text-shadow:0 0 20px rgba(34,211,238,.28);
}
.fl-stage__role { font-size:.9rem; color:var(--a-cyan); font-weight:600; margin:0 0 1.1rem; }
@keyframes flNameIn { from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:none;} }

.fl-phasebar { display:flex; align-items:center; gap:.55rem; }
.fl-phasebar__dot {
    width:26px; height:5px; border-radius:999px;
    background:rgba(255,255,255,.14); transition:all .4s ease;
}
.fl-phasebar__dot.active {
    background:linear-gradient(90deg, var(--a-cyan), var(--a-teal));
    box-shadow:0 0 12px rgba(34,211,238,.6); width:34px;
}

/* ── Roster ───────────────────────────────────────────────── */
.fl-roster {
    display:flex; flex-wrap:wrap; justify-content:center; gap:.9rem;
    max-width:960px; margin:0 auto 2.6rem;
    padding:0 0 2rem;
}
.fl-char {
    position:relative; cursor:pointer;
    width:104px; padding:.55rem .5rem .65rem;
    background:linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.02));
    border:1.5px solid rgba(255,255,255,.10);
    border-radius:1rem;
    transition:transform .28s cubic-bezier(.34,1.4,.64,1), border-color .22s, box-shadow .22s, background .22s;
    animation:flCharIn .55s cubic-bezier(.34,1.4,.64,1) both;
    animation-delay:var(--d,0s);
}
@keyframes flCharIn { from{opacity:0; transform:translateY(18px) scale(.88);} to{opacity:1; transform:none;} }
.fl-char:hover {
    transform:translateY(-5px) scale(1.04);
    border-color:rgba(34,211,238,.5);
    box-shadow:0 10px 28px rgba(0,0,0,.45), 0 0 14px rgba(34,211,238,.2);
}
.fl-char__frame {
    display:block; position:relative; width:100%; aspect-ratio:1/1;
    border-radius:.7rem; overflow:hidden; background:#080E1A;
    border:1px solid rgba(255,255,255,.08);
}
.fl-char__frame img { width:100%; height:100%; object-fit:cover; transition:transform .3s ease; }
.fl-char:hover .fl-char__frame img { transform:scale(1.07); }
.fl-char__name {
    display:block; margin-top:.45rem; font-size:.74rem; font-weight:700;
    color:rgba(255,255,255,.72); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* ── Aktive Karte ─────────────────────────────────────────── */
.fl-char.is-active {
    border-color: var(--a-cyan);
    background: linear-gradient(180deg, rgba(34,211,238,.16), rgba(34,211,238,.04));
    transform: translateY(-12px) scale(1.1);
    animation: flActivePulse 2.2s ease-in-out infinite;
    z-index: 2;
}
@keyframes flActivePulse {
    0%,100% {
        box-shadow:
            0 0 0 2px rgba(34,211,238,.55),
            0 0 0 5px rgba(34,211,238,.12),
            0 20px 44px rgba(0,0,0,.55),
            0 0 28px rgba(34,211,238,.3);
    }
    50% {
        box-shadow:
            0 0 0 2px rgba(34,211,238,.9),
            0 0 0 7px rgba(34,211,238,.22),
            0 20px 44px rgba(0,0,0,.55),
            0 0 50px rgba(34,211,238,.55);
    }
}
.fl-char.is-active .fl-char__name { color:var(--a-cyan); font-weight:800; }
.fl-char.is-active .fl-char__frame {
    border-color:rgba(34,211,238,.55);
    box-shadow:0 0 16px rgba(34,211,238,.35) inset;
}

/* hüpfender Pfeil */
.fl-char.is-active::before {
    content:'▲';
    position:absolute; bottom:-22px; left:50%;
    transform:translateX(-50%);
    color:var(--a-cyan); font-size:.75rem;
    animation:flBounce .9s ease-in-out infinite;
    filter:drop-shadow(0 0 5px rgba(34,211,238,.8));
    pointer-events:none;
}
@keyframes flBounce {
    0%,100%{ transform:translateX(-50%) translateY(0); opacity:1; }
    50%     { transform:translateX(-50%) translateY(-6px); opacity:.6; }
}

/* Checkmark-Badge */
.fl-char.is-active::after {
    content:'\f00c'; font-family:'Font Awesome 6 Free'; font-weight:900;
    position:absolute; top:-9px; right:-8px;
    width:22px; height:22px; border-radius:50%;
    background:var(--a-cyan); color:#060C18; font-size:.65rem;
    display:flex; align-items:center; justify-content:center;
    box-shadow:0 0 16px rgba(34,211,238,.8);
    animation:flPopIn .32s cubic-bezier(.34,1.56,.64,1);
}
@keyframes flPopIn { from{transform:scale(0) rotate(-30deg);} to{transform:scale(1) rotate(0deg);} }

/* ── CTA ──────────────────────────────────────────────────── */
.fl-cta {
    display:inline-flex; align-items:center; gap:.75rem;
    padding:1rem 2.4rem; border-radius:999px;
    font-size:1.05rem; font-weight:800; text-decoration:none; color:#060C18;
    background:linear-gradient(90deg, #67E8F9, var(--a-cyan) 55%, var(--a-teal));
    box-shadow:0 10px 30px rgba(34,211,238,.4), 0 0 0 1px rgba(255,255,255,.2) inset;
    transition:transform .22s cubic-bezier(.34,1.4,.64,1), box-shadow .2s;
    position:relative; overflow:hidden;
}
.fl-cta i { transition:transform .2s ease; }
.fl-cta:hover { transform:translateY(-3px) scale(1.03); box-shadow:0 16px 40px rgba(34,211,238,.5); }
.fl-cta:hover i { transform:translateX(5px); }
.fl-cta::before {
    content:''; position:absolute; top:0; left:-120%; width:60%; height:100%;
    background:linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent);
    transform:skewX(-18deg); animation:flShine 3.4s ease-in-out infinite;
}
@keyframes flShine { 0%,60%{left:-120%;} 100%{left:160%;} }

/* ── Charakter-Info ───────────────────────────────────────── */
.fl-charinfo {
    max-width:880px; margin:0 auto 2.2rem;
    display:grid; grid-template-columns:1.05fr .95fr;
    gap:1.2rem; align-items:stretch;
}
.fl-stats {
    background:linear-gradient(160deg, rgba(34,211,238,.06), rgba(255,255,255,.02));
    border:1.5px solid rgba(34,211,238,.15);
    border-radius:1.25rem; padding:1.2rem 1.5rem;
    display:flex; flex-direction:column; gap:.72rem;
}
.fl-stat { display:grid; grid-template-columns:115px 1fr 22px; align-items:center; gap:.55rem; }
.fl-stat__label {
    font-size:.67rem; font-weight:800;
    text-transform:uppercase; letter-spacing:.06em;
    color:rgba(255,255,255,.48); white-space:nowrap;
}
.fl-stat__track { height:6px; border-radius:999px; background:rgba(255,255,255,.09); overflow:hidden; }
.fl-stat__fill { height:100%; border-radius:999px; transition:width .7s cubic-bezier(.34,1.4,.64,1); }
.fl-stat__val { font-size:.72rem; font-weight:900; text-align:right; line-height:1; }

.fl-quote {
    margin:0;
    background:linear-gradient(160deg, rgba(34,211,238,.06), rgba(255,255,255,.02));
    border:1.5px solid rgba(34,211,238,.15);
    border-left:3.5px solid var(--a-cyan);
    border-radius:1.25rem; padding:1.3rem 1.5rem;
    display:flex; flex-direction:column; gap:.6rem;
    position:relative; overflow:hidden;
}
.fl-quote::before {
    content:'\201C';
    position:absolute; top:-18px; left:10px;
    font-size:7.5rem; line-height:1; font-weight:900;
    color:rgba(34,211,238,.09);
    pointer-events:none; user-select:none; font-family:Georgia,serif;
}
.fl-quote__icon { color:var(--a-cyan); font-size:1rem; opacity:.75; position:relative; z-index:1; }
.fl-quote p {
    font-style:italic; font-size:.92rem; line-height:1.65;
    color:rgba(255,255,255,.72); margin:0; position:relative; z-index:1;
}
.fl-quote__name {
    font-size:.7rem; font-weight:700; color:var(--a-cyan);
    letter-spacing:.06em; text-transform:uppercase; margin-top:.2rem;
    position:relative; z-index:1;
}

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width:760px) {
    .fl-stage { grid-template-columns:1fr; gap:1rem; }
    .fl-scene { height:300px; }
    .fl-scene__person { height:240px; }
    .fl-stage__panel { text-align:center; }
    .fl-rating, .fl-phasebar { justify-content:center; }
    .fl-char { width:88px; }
    .fl-charinfo { grid-template-columns:1fr; }
}
@media (max-width:420px) {
    .fl-char { width:calc(33.333% - .75rem); }
}
@media (prefers-reduced-motion:reduce) {
    .fl-arena__bg, .fl-arena::before, .fl-arena::after,
    .fl-stage__platform, .fl-cta::before, .fl-wheel { animation:none !important; }
    .fl-scene__person, .fl-scene__car { transition:opacity .3s ease; }
}
[dir="rtl"] .fl-stage__panel { text-align:right; }
[dir="rtl"] .fl-cta i { transform:scaleX(-1); }
[dir="rtl"] .fl-cta:hover i { transform:scaleX(-1) translateX(5px); }
[dir="rtl"] .fl-quote { border-left:none; border-right:3.5px solid var(--a-cyan); }
[dir="rtl"] .fl-quote::before { left:auto; right:10px; }
