/* ========================================
   DYMATRIX WLAN Voucher - Firmenfarben 2026
   Bereinigtes CSS
======================================== */

/* --------------------------
   ROOT / VARIABLEN
--------------------------- */
:root {
  /* DYM Türkis */
  --dym-turqis-1: #00F1C1;
  --dym-turqis-2: #3FD9BF;
  --dym-turqis-3: #2DBAA7;
  --dym-turqis-4: #18A195;

  /* CXP Blue */
  --cxp-blue-1: #0F75FF;
  --cxp-blue-2: #2375D9;
  --cxp-blue-3: #135494;

  /* CXP Midnight */
  --cxp-midnight-1: #11263D;
  --cxp-midnight-2: #0C345C;
  --cxp-midnight-3: #10457A;

  /* Petrol */
  --petrol-1: #08354D;
  --petrol-2: #0B4C6A;
  --petrol-3: #0C82AD;

  /* Neutral / Glass */
  --glass-bg: rgba(255,255,255,0.95);
  --glass-blur: blur(20px);
  --shadow-light: 0 8px 32px rgba(0,0,0,0.1);
  --shadow-hover: 0 20px 40px rgba(0,0,0,0.2);
  --border-radius: 20px;
  --transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
}

/* --------------------------
   GLOBAL / BODY
--------------------------- */
* { box-sizing: border-box; }
body {
  background: linear-gradient(135deg, var(--dym-turqis-1), var(--dym-turqis-2));
  min-height: 100vh;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

body.dym-bg {
  background-image: url('/assets/img/dym-background.png');
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  background-repeat: no-repeat;
  background-color: #0b1c28; /* Fallback */
}

/* --------------------------
   BODY FIXED HEADER
--------------------------- */
body.has-fixed-header {
    padding-top: 80px; /* Höhe der Navbar, anpassen falls größer */
    min-height: 100vh;
}

body.logout-page,
body.login-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
}

/* --------------------------
   LOGIN / LOGOUT HEADER
--------------------------- */
.login-header {
    color: #fff;
}

/* --------------------------
   LOGIN CARD FIX
--------------------------- */
.login-card {
    background: linear-gradient(
        135deg,
        var(--cxp-midnight-2),
        var(--cxp-midnight-1)
    ) !important;
    color: #ffffff;
}

/* Text im Body */
.login-card p,
.login-card small,
.login-card .text-muted {
    color: rgba(255,255,255,0.85) !important;
}

/* Footer-Links */
.login-card a:hover {
    color: #ffffff;
}


/* --------------------------
   LOGOUT CARD
--------------------------- */
.logout-card {
    background: linear-gradient(
        135deg,
        var(--cxp-midnight-1),
        var(--cxp-midnight-2)
    ) !important;

    color: #ffffff;
}

/* --------------------------
   LOGOUT BUTTON ROYAL BLUE
--------------------------- */

.logout-card a.btn-primary {
    color: #ffffff !important; /* Text + Icon */
    background: linear-gradient(135deg, var(--cxp-blue-1), var(--cxp-blue-2)) !important;
    border: none !important;
    box-shadow: 0 6px 20px rgba(15,117,255,0.45) !important;
}

.logout-card a.btn-primary:hover {
    color: #ffffff !important;
    background: linear-gradient(135deg, var(--cxp-blue-2), var(--cxp-blue-3)) !important;
}


/* --------------------------
   LOGOUT BUTTON FIX
--------------------------- */

.logout-card .btn-primary,
.logout-card .btn-primary i {
    color: #ffffff !important;
    background: linear-gradient(
        135deg,
        var(--cxp-blue-1),
        var(--cxp-blue-2)
    );
    border: none;
}

.logout-card .btn-primary:hover,
.logout-card .btn-primary:hover i {
    color: #ffffff !important;
    background: linear-gradient(
        135deg,
        var(--cxp-blue-2),
        var(--cxp-blue-3)
    );
}

/* Textfarben im Content */
.logout-card .text-muted,
.logout-card p,
.logout-card small {
    color: rgba(255,255,255,0.8) !important;
}

/* Divider */
.logout-card hr {
    border-color: rgba(255,255,255,0.25);
}


/* --------------------------
   NAVBAR
--------------------------- */
.navbar-dym {
  position: fixed !important;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1030;     /* über Content */
  min-height: 80px;
  padding: 0 1rem;
  background: linear-gradient(135deg, var(--cxp-midnight-1), var(--cxp-midnight-2));
}

.navbar-text {
  font-size: 1.5em;
}

.navbar-logo {
  max-height: 48px;
  height: auto;
}
.navbar-dym .nav-link,
.navbar-dym .btn {
  border-radius: 12px;
  padding: 0.5rem 1.25rem;
  font-weight: 500;
  color: #ffffff;
  background: linear-gradient(135deg, var(--cxp-midnight-2), var(--cxp-midnight-3));
  border: none;
  box-shadow: 0 4px 14px rgba(0,0,0,0.25);
}

.navbar-dym .nav-link:hover,
.navbar-dym .btn:hover {
  background: linear-gradient(135deg, var(--cxp-midnight-3), var(--cxp-midnight-1));
  box-shadow: 0 6px 20px rgba(0,0,0,0.35);
  color: #fff;
}

.navbar-dym .nav-link.active,
.navbar-dym .btn.active {
  background: linear-gradient(135deg, var(--dym-turqis-1), var(--dym-turqis-2));
  color: #0b1c28;
  box-shadow: 0 6px 24px rgba(0,241,193,0.6);
}

/* --------------------------
   BUTTON VARIANTS
--------------------------- */
.btn-primary {
  background: linear-gradient(135deg, var(--cxp-blue-1), var(--cxp-blue-2));
  border: none;
}
.btn-primary:hover {
  background: linear-gradient(135deg, var(--cxp-blue-2), var(--cxp-blue-3));
  border: none;
}

.btn-success {
  background: linear-gradient(135deg, var(--dym-turqis-3), var(--dym-turqis-4));
  border: none;
}
.btn-success:hover {
  background: linear-gradient(135deg, var(--dym-turqis-4), var(--dym-turqis-3));
  border: none;
}

.btn-info {
  background: linear-gradient(135deg, var(--cxp-midnight-2), var(--cxp-midnight-3));
  border: none;
}

/* --------------------------
   LIFT HOVER EFFEKT NUR FÜR GROSSE BUTTONS
--------------------------- */
.btn-lift:hover {
    transform: translateY(-2px);
    transition: transform 0.1s ease-in-out;
    box-shadow: 0 4px 12px rgba(0,0,0,0.2);
}

/* KEINE Borders/Transforms für ALLE Primary Buttons */
.btn,
.btn *,
.btn:hover,
.btn:focus,
.btn:active,
.btn:disabled,
.btn-primary,
.btn-primary *,
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary:disabled,
.btn-secondary,
.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:active {
    border: none !important;
    outline: none !important;
    transform: none !important;
    transition: background 0.3s ease, box-shadow 0.3s ease, color 0.3s ease !important;
}


/* --------------------------
   GLASS CARDS
--------------------------- */
.glass-card {
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  border-radius: var(--border-radius);
  box-shadow: var(--shadow-light);
  border: 1px solid rgba(255,255,255,0.2);
  transition: var(--transition);
}

/* Extra padding nur links für alle Tabellenzellen */
.glass-card table td,
.glass-card table th {
    padding-left: 2rem; /* ca. 16px = ~2-3mm, je nach Bildschirm */
}

.glass-card table form input.form-control-sm,
.glass-card table form select.form-select-sm {
    max-width: 220px; /* statt 180px / 160px */
}

/* Optional: Abstände zwischen Formularfeldern und Buttons in der Tabelle */
.glass-card table form input.form-control-sm {
    margin-right: 0.3rem;
}

/* --------------------------
   VOUCHER CARDS
--------------------------- */
.voucher-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  padding: 1.8rem 1.2rem;
  min-height: 200px;
  gap: 0.75rem;
  border-radius: var(--border-radius);
  border: 2px solid rgba(255,255,255,0.4);
  box-shadow: var(--shadow-light);
  cursor: pointer;
  transition: var(--transition);
}

.voucher-card:hover {
  transform: translateY(-8px) scale(1.02);
  box-shadow: var(--shadow-hover);
}

.voucher-card .code-text {
  font-size: 1.6rem !important;
  line-height: 1.0 !important;
  margin-top: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 1px !important;
}

.status-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 16px rgba(0,0,0,0.15);
  font-size: 1rem;
}

/* Voucher Status */
.voucher-card.valid { color: var(--dym-turqis-3); }
.voucher-card.redeemed {
  color: #6c757d;
  background: linear-gradient(135deg, #f0f4f7, #e4e8eb);
}
.voucher-card.redeemed .fas {
    color: #6c757d !important; /* graues Hourglass */
}
.voucher-card.invalid { color: #721c24; }



/* Code Blur für ALLE gültigen Vouchers (Anti-Kopieren!) */
.voucher-card .code-text.blurred {
    filter: blur(8px);
    user-select: none;
    pointer-events: none; /* Verhindert Textauswahl */
}

/* Hover: Leicht entblurren zum Teasen */
.voucher-card.valid:hover .code-text.blurred {
    filter: blur(6px);
}

/* Im Modal: Vollständig scharf */
#redeemModal .code-text {
    filter: blur(0) !important;
    user-select: text;
    font-size: 2rem !important; /* Größer im Popup */
    letter-spacing: 2px;
}

/* Redeemed bleibt geblurrt (bereits so) */
.voucher-card.redeemed .code-text {
    filter: blur(4px);
    user-select: none;
}

/* Royal Blau Standort - PLAIN (kein Hover) */
#redeemLocation {
    background: linear-gradient(135deg, var(--cxp-blue-1), var(--cxp-blue-2)) !important;
    color: white !important;
    padding: 0.6rem 1.2rem !important;
    border-radius: 12px !important;
    font-weight: 500 !important;
    font-size: 0.95rem !important;
    box-shadow: 0 2px 8px rgba(15,117,255,0.25) !important; /* Leichter Schatten */
    backdrop-filter: blur(10px) !important;
    display: inline-flex !important;
    align-items: center !important;
    pointer-events: none !important; /* Kann nicht geklickt werden */
}


/* Copy Button - DEZENT WEISS */
.btn-copy {
    background: rgba(255,255,255,0.85) !important;  /* Dezent weiß */
    border: 2px solid rgba(0,0,0,0.1) !important;
    border-radius: 12px !important;
    width: 40px !important;
    height: 40px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.12) !important;
    backdrop-filter: blur(12px) !important;
}

.btn-copy i {
    font-size: 0.85rem !important;
    color: #333333 !important;  /* Schwarz/grau */
}

.btn-copy:hover {
    background: rgba(255,255,255,1) !important;
    border-color: rgba(0,0,0,0.2) !important;
    box-shadow: 0 4px 12px rgba(0,0,0,0.2) !important;
}

.btn-copy.copied {
    background: linear-gradient(135deg, var(--dym-turqis-3), var(--dym-turqis-4)) !important;
    border-color: var(--dym-turqis-2) !important;
}

.btn-copy.copied i {
    color: white !important;  /* Weißes Häkchen */
}


/* Redeem Modal - GENAU 450px */
#redeemModal .modal-dialog {
    max-width: 450px !important;  /* Perfekt */
    margin: 1.75rem auto;
}

#redeemModal .modal-content {
    border-radius: 24px;
}

/* Mobile full-width */
@media (max-width: 576px) {
    #redeemModal .modal-dialog {
        max-width: calc(100vw - 2rem) !important;
        margin: 1rem;
    }
}


/* --------------------------
   SORT BUTTONS
--------------------------- */
.fa-sort,
.fa-sort-down,
.fa-sort-up {
    color:var(--cxp-blue-1) !important;
}

/* --------------------------
   TAGS
--------------------------- */
.tag-admin {
    display: inline-block;
    background-color: rgba(255,193,7,1);
    color: #fff;
    font-size: 0.75rem;
    padding: 0.1rem 0.4rem;
    border-radius: 0.25rem;
    margin-left: 0.3rem;
}

/* --------------------------
   FILTER BUTTONS
--------------------------- */
/* --------------------------
   Voucher Filter Buttons - Einfarbig
---------------------------*/

/* Normalzustand: helles Grau */
.filter-btn {
    border-width: 2px;
    border-color: #ced4da; /* helles Grau */
    background-color: #f8f9fa; /* sehr helles Grau */
    color: #495057; /* dunkleres Grau für Text */
}

/* Hover: leicht dunkler */
.filter-btn:hover {
    background-color: #e9ecef; /* hellgrau dunkler */
    color: #212529;
}

/* Aktiver Button: gesättigtes Blau oder DYM Türkis */
.filter-btn.active {
    background-color: var(--dym-turqis-3); /* oder #0d6efd für blau */
    color: #fff;
    border-color: var(--dym-turqis-3);
}


.filter-btn[data-status="valid"] { border-color: var(--dym-turqis-3); color: var(--dym-turqis-3); }
.filter-btn[data-status="valid"].active { background: var(--dym-turqis-3); color: #fff; }

.filter-btn[data-status="redeemed"] { border-color: #6c757d; color: #6c757d; }
.filter-btn[data-status="redeemed"].active { background: #6c757d; color: #fff; }

.filter-btn[data-status="all"] { border-color: #0d6efd; color: #0d6efd; }
.filter-btn[data-status="all"].active { background: #0d6efd; color: #fff; }

/* --------------------------
   TABLES & FORMS
--------------------------- */
.table { background: var(--glass-bg); border-radius: 15px; overflow: hidden; }
.form-control, .form-select { border-radius: 12px; border: 2px solid rgba(0,0,0,0.1); }
.form-control:focus, .form-select:focus { border-color: var(--dym-turqis-3); box-shadow: 0 0 0 0.2rem rgba(40,167,69,0.15); }

/* --------------------------
   HOWTO SLIDE-IN PANEL (links)
--------------------------- */
.howto-container {
    position: fixed;
    top: 100px;
    left: -300px;
    z-index: 1040;
    transition: left 0.4s cubic-bezier(0.4,0,0.2,1);
    height: calc(100vh - 120px);
}

.howto-container.open {
    left: 0;
}

.howto-trigger {
    position: absolute;
    right: -45px;
    top: 50%;
    transform: translateY(-50%);
    width: 52px;
    height: 52px;
    background: linear-gradient(135deg, var(--dym-turqis-1), var(--dym-turqis-2));
    border-radius: 0 16px 16px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    backdrop-filter: blur(10px);
    border: 2px solid rgba(255,255,255,0.4);
    transition: all 0.3s cubic-bezier(0.4,0,0.2,1);
    box-shadow: -6px 6px 20px rgba(0,0,0,0.4);
}

.howto-trigger:hover {
    background: linear-gradient(135deg, var(--dym-turqis-2), var(--dym-turqis-3));
    transform: translateY(-50%) scale(1.05);
    box-shadow: -8px 8px 25px rgba(0,0,0,0.5), 0 4px 16px rgba(0,241,193,0.4);
}

.howto-trigger i {
    font-size: 1.3rem;
    color: #0b1c28;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.2));
}

/* OFFEN: Türkis BG + weiße Birne + Pulsing */
.howto-container.open .howto-trigger {
    background: linear-gradient(135deg, var(--dym-turqis-3), var(--dym-turqis-4)) !important;
    border-color: rgba(255,255,255,0.6);
    animation: bulbPulse 2s infinite;
}

.howto-container.open .howto-trigger i {
    color: white !important;
}

@keyframes bulbPulse {
    0%, 100% { transform: translateY(-50%) scale(1); }
    50% { transform: translateY(-50%) scale(1.05); }
}

/* HOVER */
.howto-container.open .howto-trigger:hover {
    animation: none !important;
    background: linear-gradient(135deg, var(--dym-turqis-4), var(--dym-turqis-3)) !important;
    transform: translateY(-50%) scale(1.08) !important;
    box-shadow: -10px 10px 30px rgba(0,0,0,0.6), 0 6px 20px rgba(0,241,193,0.5) !important;
}

.howto-panel {
    width: 300px;
    height: 100%;
    background: var(--glass-bg);
    backdrop-filter: var(--glass-blur);
    border-radius: 0 20px 20px 0;
    box-shadow: var(--shadow-light);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Rest wie gehabt */
.howto-header {
    padding: 1.5rem 1.5rem 1rem;
    border-bottom: 1px solid rgba(255,255,255,0.2);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.howto-header h6 {
    margin: 0;
    font-weight: 600;
    color: #1a1a1a;
}

.btn-close-howto {
    background: none;
    border: none;
    font-size: 1.2rem;
    color: #6c757d;
    padding: 0.25rem;
    border-radius: 50%;
    cursor: pointer;
    transition: all 0.2s ease;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.btn-close-howto:hover {
    background: rgba(108,117,125,0.15);
    color: #495057;
}

.howto-content {
    padding: 1.5rem;
    flex: 1;
    overflow-y: auto;
}

.howto-step {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(0,0,0,0.05);
}

.howto-step:last-child {
    border-bottom: none;
    margin-bottom: 0;
}

.step-number {
    width: 28px;
    height: 28px;
    background: linear-gradient(135deg, var(--dym-turqis-1), var(--dym-turqis-2));
    color: #0b1c28;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.9rem;
    flex-shrink: 0;
    box-shadow: 0 4px 12px rgba(0,241,193,0.4);
}

.howto-step span {
    font-weight: 500;
    color: #1a1a1a;
    line-height: 1.4;
}

/* Birne-Status (weiße Birne wenn offen) */
.howto-container:not(.open) .howto-trigger i {
    color: #0b1c28; /* Dunkel auf Türkis */
}

.howto-container.open .howto-trigger i {
    color: white !important;   /* WEIßES SYMBOL */
}

.howto-container.open .howto-trigger {
    animation: bulbPulse 2s infinite;
}

@keyframes bulbPulse {
    0%, 100% { 
        transform: translateY(-50%) scale(1); 
        box-shadow: -6px 6px 20px rgba(0,0,0,0.4);
    }
    50% { 
        transform: translateY(-50%) scale(1.06); /* 3-6px Scale (zentral!) */
        box-shadow: -8px 8px 25px rgba(0,0,0,0.5), 0 0 20px rgba(0,241,193,0.6);
    }
}

.howto-container.open .howto-trigger:hover {
    animation: none;
    transform: translateY(-48px) scale(1.08); /* Leicht angehoben bei Hover */
    box-shadow: -10px 10px 30px rgba(0,0,0,0.6);
}

/* RESPONSIVE links */
@media (max-width: 768px) {
    .howto-container {
        top: 90px;
        left: -260px;          /* GENAU = Panel-Breite */
        height: calc(100vh - 110px);
    }
    
    .howto-panel {
        width: 260px;          /* REDUZIERT */
    }
    
    .howto-trigger {
        width: 44px;
        height: 44px;
        right: -28px;          /* OPTIMAL für Mobile */
    }
    
    .howto-trigger i {
        font-size: 1.1rem;
    }
}

@media (max-width: 576px) {
    .howto-panel {
        width: 260px;
    }
    
    .howto-container {
        left: -260px;          /* statt right */
    }
}

/* --------------------------
   RESPONSIVE
--------------------------- */
@media (max-width: 768px) {
  .voucher-card { min-height: 180px; padding: 1.5rem 1rem; }
  .code-text { font-size: 1.5rem; }
  .status-badge { width: 36px; height: 36px; top: 10px; right: 10px; }
}

/* Responsive Table für Admin-Vouchers */
@media (max-width: 992px) {
    table.table thead th {
        font-size: 0.85rem;
        white-space: nowrap;
    }
    table.table td input.form-control-sm,
    table.table td select.form-select-sm {
        font-size: 0.75rem;
        padding: 0.2rem 0.4rem;
    }
    table.table td .btn-sm {
        padding: 0.25rem 0.35rem;
        font-size: 0.75rem;
    }
}
@media (max-width: 576px) {
    table.table td, table.table th {
        font-size: 0.7rem;
    }
    table.table td input.form-control-sm,
    table.table td select.form-select-sm {
        font-size: 0.65rem;
    }
}