/* =========================================================
   BASE -- Reset, Scrollbar, html/body. Aus style.css extrahiert.
   ========================================================= */
* { margin: 0; padding: 0; box-sizing: border-box; border-radius: 0; }

/* Scrollbars durchgaengig im Ehrenchecker-Look statt Browser-Standard --
   greift ueberall (Matrix-Auswahl, Modals, Admin-Liste, Rangliste, etc.). */
* { scrollbar-width: thin; scrollbar-color: var(--ec-cyan) rgba(8,18,40,0.4); }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: rgba(8,18,40,0.4); }
*::-webkit-scrollbar-thumb { background: var(--ec-cyan); border: 1px solid rgba(0,240,255,0.3); box-shadow: 0 0 6px rgba(0,240,255,0.4); }
*::-webkit-scrollbar-thumb:hover { box-shadow: 0 0 12px var(--ec-cyan); }

/* html braucht ein eigenes overflow-x:hidden, "overflow:hidden" auf body allein reicht auf
   mobilem Safari nicht -- dort kann der Viewport trotzdem seitlich per Touch-Drag wegrutschen,
   wenn irgendein Nachfahre (auch ein fixed-positioniertes Element) minimal breiter als 100%
   wird. Das war der gemeldete "ganzer Bildschirm laesst sich seitlich schieben"-Bug im Profil. */
html { overflow-x: hidden; }
body {
    background-color: var(--ec-bg-0);
    color: var(--ec-text-primary);
    font-family: var(--font-body);
    min-height: 100vh;
    height: 100dvh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
}

/* Sichtbarer Keyboard-Fokus app-weit (Master Brief Abschnitt 33) -- greift ueberall
   dort, wo kein Element selbst schon einen eigenen, deutlicheren Fokus-Stil setzt. */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, [tabindex]:focus-visible {
    outline: 2px solid var(--ec-cyan);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
}
