/* =============================================================================
   gophish — dark theme overlay
   Loaded after /css/dist/gophish.css, so it wins via cascade + targeted !important.
   Aesthetic: obsidian surfaces, hairline borders, JetBrains Mono chrome,
   Inter body, mint accent, soft cubic-bezier motion.
   ============================================================================= */

:root {
    color-scheme: dark;

    /* Surfaces — graduated near-black */
    --bg-0: #0a0b0d;
    --bg-1: #101216;
    --bg-2: #161a20;
    --bg-3: #1c2128;
    --bg-4: #242a33;
    --bg-elev: #0d0f12;

    /* Lines */
    --line: rgba(255, 255, 255, 0.06);
    --line-strong: rgba(255, 255, 255, 0.12);
    --line-accent: rgba(124, 255, 178, 0.28);

    /* Text */
    --fg-0: #e8eaed;
    --fg-1: #a8b0bb;
    --fg-2: #6b7380;
    --fg-3: #4a505a;

    /* Accent — phishing-mint */
    --accent: #7cffb2;
    --accent-hover: #9bffc4;
    --accent-soft: rgba(124, 255, 178, 0.10);
    --accent-glow: rgba(124, 255, 178, 0.35);

    /* Status palette (re-tuned for dark) */
    --c-sending: #60a5fa;
    --c-sent: #2dd4bf;
    --c-opened: #fbbf24;
    --c-clicked: #fb923c;
    --c-success: #f87171;
    --c-reported: #38bdf8;
    --c-error: #94a3b8;

    /* Type */
    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --font-mono: 'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Consolas, monospace;

    /* Motion */
    --ease: cubic-bezier(0.22, 1, 0.36, 1);
    --ease-in: cubic-bezier(0.55, 0, 0.78, 0.36);
    --dur-fast: 140ms;
    --dur: 220ms;
    --dur-slow: 380ms;

    /* Shadows */
    --shadow-sm: 0 1px 0 rgba(255, 255, 255, 0.03) inset, 0 1px 2px rgba(0, 0, 0, 0.4);
    --shadow-md: 0 8px 24px rgba(0, 0, 0, 0.45), 0 1px 0 rgba(255, 255, 255, 0.04) inset;
    --shadow-lg: 0 24px 56px rgba(0, 0, 0, 0.55), 0 1px 0 rgba(255, 255, 255, 0.05) inset;
}

/* -----------------------------------------------------------------------------
   Base
   ----------------------------------------------------------------------------- */

html,
body {
    background: var(--bg-0) !important;
    color: var(--fg-0) !important;
    font-family: var(--font-sans) !important;
    font-feature-settings: "ss01", "cv11";
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    background-image:
        radial-gradient(1200px 600px at 80% -10%, rgba(124, 255, 178, 0.04), transparent 60%),
        radial-gradient(900px 500px at -10% 100%, rgba(96, 165, 250, 0.04), transparent 60%);
    background-attachment: fixed;
}

::selection {
    background: var(--accent-soft);
    color: var(--accent);
}

::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-track {
    background: var(--bg-0);
}

::-webkit-scrollbar-thumb {
    background: var(--bg-3);
    border-radius: 8px;
    border: 2px solid var(--bg-0);
    transition: background var(--dur) var(--ease);
}

::-webkit-scrollbar-thumb:hover {
    background: var(--bg-4);
}

a {
    color: var(--accent);
    transition: color var(--dur-fast) var(--ease), opacity var(--dur-fast) var(--ease);
}

a:hover,
a:focus {
    color: var(--accent-hover);
    text-decoration: none;
    outline: none;
}

hr {
    border: 0;
    border-top: 1px solid var(--line);
    margin: 18px 0;
}

p {
    color: var(--fg-1);
    font-size: 14px;
    line-height: 1.6;
}

code,
pre,
kbd,
samp {
    font-family: var(--font-mono) !important;
    background: var(--bg-2) !important;
    color: var(--accent) !important;
    border: 1px solid var(--line) !important;
    border-radius: 4px;
    padding: 1px 6px;
    font-size: 0.92em;
}

pre {
    padding: 14px 16px;
    line-height: 1.55;
}

/* Headings — JetBrains Mono with tight tracking */
h1,
h2,
h3,
h4,
h5,
h6,
.page-header,
.modal-title,
.form-signin-heading {
    font-family: var(--font-mono) !important;
    color: var(--fg-0) !important;
    font-weight: 500 !important;
    letter-spacing: -0.01em;
}

h1,
.page-header {
    font-size: 26px !important;
    border-bottom: 1px solid var(--line) !important;
    padding-bottom: 18px !important;
    margin-bottom: 22px !important;
    position: relative;
}

h1.page-header::before,
.page-header::before {
    content: "";
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 64px;
    height: 1px;
    background: var(--accent);
    box-shadow: 0 0 12px var(--accent-glow);
}

h2 {
    font-size: 20px !important;
    margin-top: 28px;
    margin-bottom: 14px;
}

h3 {
    font-size: 16px !important;
}

/* -----------------------------------------------------------------------------
   Page entrance — staggered fade
   ----------------------------------------------------------------------------- */

@keyframes gp-fade-in {
    from {
        opacity: 0;
        transform: translateY(6px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes gp-pulse-dot {
    0%, 100% {
        opacity: 0.4;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.15);
    }
}

@keyframes gp-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

.main > * {
    animation: gp-fade-in var(--dur-slow) var(--ease) both;
}
.main > *:nth-child(1) { animation-delay: 20ms; }
.main > *:nth-child(2) { animation-delay: 60ms; }
.main > *:nth-child(3) { animation-delay: 100ms; }
.main > *:nth-child(4) { animation-delay: 140ms; }
.main > *:nth-child(5) { animation-delay: 180ms; }
.main > *:nth-child(6) { animation-delay: 220ms; }
.main > *:nth-child(7) { animation-delay: 260ms; }
.main > *:nth-child(n+8) { animation-delay: 300ms; }

.tab-pane.active {
    animation: gp-fade-in var(--dur) var(--ease);
}

/* -----------------------------------------------------------------------------
   Top navbar
   ----------------------------------------------------------------------------- */

.navbar,
.navbar-inverse,
.navbar-fixed-top {
    background: rgba(10, 11, 13, 0.78) !important;
    background-color: rgba(10, 11, 13, 0.78) !important;
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border: 0 !important;
    border-bottom: 1px solid var(--line) !important;
    box-shadow: none !important;
    min-height: 52px;
}

.navbar-brand {
    font-family: var(--font-mono) !important;
    color: var(--fg-0) !important;
    font-weight: 500 !important;
    letter-spacing: 0.02em;
    line-height: 22px;
    transition: color var(--dur-fast) var(--ease);
}

.navbar-brand::after {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-left: 8px;
    border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 8px var(--accent-glow);
    animation: gp-pulse-dot 2.4s var(--ease) infinite;
    vertical-align: middle;
}

.navbar-brand:hover {
    color: var(--accent) !important;
}

.navbar-logo {
    filter: brightness(0) invert(1) opacity(0.85);
    transition: filter var(--dur) var(--ease);
}

.navbar-logo:hover {
    filter: brightness(0) invert(1) opacity(1);
}

.navbar-toggle {
    border-color: var(--line-strong) !important;
}

.navbar-toggle .icon-bar {
    background-color: var(--fg-1) !important;
}

#navbar-dropdown .btn,
#navbar-dropdown .btn-primary {
    background: transparent !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    font-family: var(--font-mono) !important;
    font-size: 12px !important;
    letter-spacing: 0.04em;
    text-transform: lowercase;
    padding: 7px 14px !important;
    transition: background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}

#navbar-dropdown .btn:hover {
    background: var(--bg-2) !important;
    border-color: var(--line-accent) !important;
    color: var(--accent) !important;
}

/* -----------------------------------------------------------------------------
   Sidebar
   ----------------------------------------------------------------------------- */

.sidebar {
    background: var(--bg-0) !important;
    border-right: 1px solid var(--line) !important;
    padding-top: 28px !important;
}

.nav-sidebar > li > a {
    color: var(--fg-1) !important;
    font-family: var(--font-sans) !important;
    font-size: 13px !important;
    font-weight: 450 !important;
    letter-spacing: 0.005em;
    padding: 9px 16px !important;
    margin: 2px 8px;
    border-radius: 6px;
    border: 1px solid transparent;
    position: relative;
    transition:
        background var(--dur-fast) var(--ease),
        color var(--dur-fast) var(--ease),
        border-color var(--dur-fast) var(--ease),
        padding-left var(--dur-fast) var(--ease);
}

.nav-sidebar > li > a:hover,
.nav-sidebar > li > a:focus {
    background: var(--bg-2) !important;
    color: var(--fg-0) !important;
    padding-left: 20px !important;
}

.nav-sidebar > .active > a,
.nav-sidebar > .active > a:hover,
.nav-sidebar > .active > a:focus {
    background: var(--accent-soft) !important;
    color: var(--accent) !important;
    border-color: var(--line-accent) !important;
    box-shadow: inset 2px 0 0 var(--accent);
}

.nav-sidebar > li > hr,
.sidebar hr {
    border-top: 1px solid var(--line) !important;
    margin: 14px 12px;
}

.nav-badge.badge {
    background: transparent !important;
    color: var(--accent) !important;
    border: 1px solid var(--line-accent);
    font-family: var(--font-mono) !important;
    font-size: 9px !important;
    font-weight: 500 !important;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 2px 6px !important;
    border-radius: 3px;
}

/* -----------------------------------------------------------------------------
   Buttons
   ----------------------------------------------------------------------------- */

.btn {
    font-family: var(--font-mono) !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    letter-spacing: 0.04em;
    text-transform: lowercase;
    border-radius: 6px !important;
    border: 1px solid var(--line-strong) !important;
    padding: 8px 16px !important;
    background: var(--bg-2) !important;
    color: var(--fg-0) !important;
    box-shadow: var(--shadow-sm);
    transition:
        background var(--dur-fast) var(--ease),
        border-color var(--dur-fast) var(--ease),
        color var(--dur-fast) var(--ease),
        transform var(--dur-fast) var(--ease),
        box-shadow var(--dur-fast) var(--ease);
}

.btn:hover,
.btn:focus {
    background: var(--bg-3) !important;
    border-color: var(--line-accent) !important;
    color: var(--fg-0) !important;
    transform: translateY(-1px);
    outline: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
}

.btn:active {
    transform: translateY(0);
}

.btn-primary,
.btn-blue {
    background: var(--accent) !important;
    border-color: var(--accent) !important;
    color: #04140a !important;
    box-shadow: 0 0 0 0 var(--accent-glow);
}

.btn-primary:hover,
.btn-primary:focus,
.btn-blue:hover {
    background: var(--accent-hover) !important;
    border-color: var(--accent-hover) !important;
    color: #04140a !important;
    box-shadow: 0 8px 20px rgba(124, 255, 178, 0.18);
}

.btn-success {
    background: #1f8d52 !important;
    border-color: #1f8d52 !important;
    color: #fff !important;
}

.btn-danger {
    background: #b94a4a !important;
    border-color: #b94a4a !important;
    color: #fff !important;
}

.btn-warning {
    background: #b8881e !important;
    border-color: #b8881e !important;
    color: #fff !important;
}

.btn-info {
    background: #2a6db0 !important;
    border-color: #2a6db0 !important;
    color: #fff !important;
}

.btn-default {
    background: var(--bg-2) !important;
    border-color: var(--line-strong) !important;
    color: var(--fg-0) !important;
}

.btn-lg {
    padding: 12px 20px !important;
    font-size: 13px !important;
}

.btn-sm,
.btn-xs {
    padding: 5px 10px !important;
    font-size: 11px !important;
}

.btn-block {
    width: 100%;
}

.btn-group .btn + .btn {
    margin-left: -1px;
}

/* -----------------------------------------------------------------------------
   Forms
   ----------------------------------------------------------------------------- */

.form-control,
input[type="text"],
input[type="password"],
input[type="email"],
input[type="number"],
input[type="search"],
input[type="url"],
textarea,
select {
    background: var(--bg-2) !important;
    background-color: var(--bg-2) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    border-radius: 6px !important;
    box-shadow: none !important;
    font-family: var(--font-sans) !important;
    font-size: 13px !important;
    padding: 9px 12px !important;
    height: auto !important;
    transition:
        border-color var(--dur-fast) var(--ease),
        box-shadow var(--dur-fast) var(--ease),
        background var(--dur-fast) var(--ease);
}

.form-control:focus,
input:focus,
textarea:focus,
select:focus {
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px var(--accent-soft) !important;
    outline: none !important;
    background: var(--bg-2) !important;
}

.form-control::placeholder {
    color: var(--fg-3) !important;
}

label,
.control-label,
.form-label {
    color: var(--fg-1) !important;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 6px;
}

.input-group-addon {
    background: var(--bg-3) !important;
    border-color: var(--line-strong) !important;
    color: var(--fg-1) !important;
    font-family: var(--font-mono) !important;
}

.help-block,
.form-text {
    color: var(--fg-2) !important;
    font-size: 12px;
}

.checkbox label,
.radio label {
    text-transform: none;
    letter-spacing: normal;
    font-family: var(--font-sans) !important;
    font-size: 13px !important;
    color: var(--fg-1) !important;
}

/* -----------------------------------------------------------------------------
   Tables / DataTables
   ----------------------------------------------------------------------------- */

.table,
table.dataTable {
    background: transparent !important;
    color: var(--fg-0) !important;
    border-color: var(--line) !important;
}

.table > thead > tr > th,
table.dataTable thead th {
    background: transparent !important;
    color: var(--fg-2) !important;
    font-family: var(--font-mono) !important;
    font-size: 10px !important;
    font-weight: 500 !important;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--line-strong) !important;
    border-top: 0 !important;
    padding: 12px 14px !important;
}

.table > tbody > tr > td,
table.dataTable tbody td {
    border-top: 1px solid var(--line) !important;
    color: var(--fg-0) !important;
    font-size: 13px !important;
    padding: 12px 14px !important;
    vertical-align: middle;
    transition: background var(--dur-fast) var(--ease);
}

.table > tbody > tr:hover > td,
table.dataTable tbody tr:hover td {
    background: var(--bg-1) !important;
}

.table-striped > tbody > tr:nth-of-type(odd) {
    background: transparent !important;
}

.dataTables_wrapper {
    color: var(--fg-1) !important;
    font-family: var(--font-sans) !important;
    font-size: 13px;
}

.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_processing,
.dataTables_wrapper .dataTables_paginate {
    color: var(--fg-2) !important;
}

.dataTables_wrapper .dataTables_filter input {
    background: var(--bg-2) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    border-radius: 6px;
    padding: 6px 10px !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button {
    color: var(--fg-1) !important;
    border: 1px solid var(--line) !important;
    background: transparent !important;
    border-radius: 4px;
    margin: 0 2px;
    transition: all var(--dur-fast) var(--ease);
}

.dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background: var(--bg-2) !important;
    color: var(--accent) !important;
    border-color: var(--line-accent) !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
    background: var(--accent-soft) !important;
    color: var(--accent) !important;
    border-color: var(--line-accent) !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover {
    color: var(--fg-3) !important;
    background: transparent !important;
    border-color: var(--line) !important;
}

table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after {
    color: var(--accent) !important;
    opacity: 0.6;
}

td.details-control {
    color: var(--accent) !important;
}

/* -----------------------------------------------------------------------------
   Panels / Cards / Wells
   ----------------------------------------------------------------------------- */

.panel,
.well,
.modal-content,
.card {
    background: var(--bg-1) !important;
    background-color: var(--bg-1) !important;
    border: 1px solid var(--line) !important;
    border-radius: 8px !important;
    box-shadow: var(--shadow-md) !important;
    color: var(--fg-0) !important;
}

.panel-heading,
.modal-header {
    background: transparent !important;
    border-bottom: 1px solid var(--line) !important;
    color: var(--fg-0) !important;
    padding: 14px 18px !important;
}

.panel-body,
.modal-body {
    color: var(--fg-0) !important;
    padding: 18px !important;
}

.panel-footer,
.modal-footer {
    background: transparent !important;
    border-top: 1px solid var(--line) !important;
    padding: 14px 18px !important;
}

/* -----------------------------------------------------------------------------
   Modals
   ----------------------------------------------------------------------------- */

.modal-backdrop,
.modal-backdrop.in {
    background: #000 !important;
    opacity: 0.72 !important;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}

.modal-content {
    box-shadow: var(--shadow-lg) !important;
}

.modal-header .close,
.close {
    color: var(--fg-1) !important;
    text-shadow: none !important;
    opacity: 0.7;
    transition: opacity var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
    font-size: 22px;
}

.modal-header .close:hover {
    color: var(--accent) !important;
    opacity: 1;
}

.modal.fade .modal-dialog {
    transition: transform var(--dur-slow) var(--ease), opacity var(--dur) var(--ease) !important;
    transform: translateY(-12px) scale(0.98);
}

.modal.in .modal-dialog {
    transform: translateY(0) scale(1);
}

.modal.fade {
    transition: opacity var(--dur) var(--ease);
}

/* -----------------------------------------------------------------------------
   Tabs
   ----------------------------------------------------------------------------- */

.nav-tabs {
    border-bottom: 1px solid var(--line) !important;
}

.nav-tabs > li > a {
    color: var(--fg-2) !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 2px solid transparent !important;
    border-radius: 0 !important;
    margin-right: 0 !important;
    padding: 10px 18px !important;
    font-family: var(--font-mono) !important;
    font-size: 12px !important;
    letter-spacing: 0.04em;
    text-transform: lowercase;
    transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
}

.nav-tabs > li > a:hover,
.nav-tabs > li > a:focus {
    color: var(--fg-0) !important;
    background: transparent !important;
    border-color: transparent transparent var(--line-strong) !important;
}

.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
    color: var(--accent) !important;
    background: transparent !important;
    border-color: transparent transparent var(--accent) !important;
}

/* -----------------------------------------------------------------------------
   Dropdowns
   ----------------------------------------------------------------------------- */

.dropdown-menu {
    background: var(--bg-elev) !important;
    border: 1px solid var(--line-strong) !important;
    border-radius: 8px !important;
    box-shadow: var(--shadow-lg) !important;
    padding: 6px !important;
    min-width: 180px;
}

.dropdown-menu > li > a {
    color: var(--fg-1) !important;
    font-size: 13px !important;
    font-family: var(--font-sans) !important;
    padding: 8px 12px !important;
    border-radius: 5px;
    transition: all var(--dur-fast) var(--ease);
}

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
    background: var(--bg-2) !important;
    color: var(--accent) !important;
}

.dropdown-menu .divider {
    background: var(--line) !important;
    margin: 6px 0 !important;
}

/* -----------------------------------------------------------------------------
   Alerts
   ----------------------------------------------------------------------------- */

.alert {
    border: 1px solid var(--line) !important;
    border-radius: 6px !important;
    padding: 12px 16px !important;
    font-size: 13px !important;
}

.alert-info {
    background: rgba(56, 189, 248, 0.08) !important;
    border-color: rgba(56, 189, 248, 0.25) !important;
    color: #7dd3fc !important;
}

.alert-success {
    background: rgba(124, 255, 178, 0.08) !important;
    border-color: var(--line-accent) !important;
    color: var(--accent) !important;
}

.alert-warning {
    background: rgba(251, 191, 36, 0.08) !important;
    border-color: rgba(251, 191, 36, 0.25) !important;
    color: #fcd34d !important;
}

.alert-danger {
    background: rgba(248, 113, 113, 0.08) !important;
    border-color: rgba(248, 113, 113, 0.25) !important;
    color: #fca5a5 !important;
}

/* -----------------------------------------------------------------------------
   Labels / Badges
   ----------------------------------------------------------------------------- */

.label,
.badge {
    font-family: var(--font-mono) !important;
    font-weight: 500 !important;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-size: 10px !important;
    padding: 3px 7px !important;
    border-radius: 3px !important;
    border: 1px solid transparent;
}

.label-default { background: var(--bg-3) !important; color: var(--fg-1) !important; }
.label-primary { background: var(--accent-soft) !important; color: var(--accent) !important; border-color: var(--line-accent); }
.label-success { background: rgba(45, 212, 191, 0.12) !important; color: #5eead4 !important; }
.label-info    { background: rgba(56, 189, 248, 0.12) !important; color: #7dd3fc !important; }
.label-warning { background: rgba(251, 191, 36, 0.12) !important; color: #fcd34d !important; }
.label-danger  { background: rgba(248, 113, 113, 0.12) !important; color: #fca5a5 !important; }
.label-clicked { background: rgba(251, 146, 60, 0.12) !important; color: #fdba74 !important; }

/* -----------------------------------------------------------------------------
   Status colors (charts + counters)
   ----------------------------------------------------------------------------- */

.color-success  { color: var(--c-success) !important; }
.color-sent     { color: var(--c-sent) !important; }
.color-opened   { color: var(--c-opened) !important; }
.color-clicked  { color: var(--c-clicked) !important; }
.color-reported { color: var(--c-reported) !important; }

/* Chartist line points */
.ct-point-sending  { fill: var(--c-sending) !important; }
.ct-point-error    { fill: var(--c-error) !important; }
.ct-point-clicked  { fill: var(--c-clicked) !important; }
.ct-point-opened   { fill: var(--c-opened) !important; }
.ct-point-sent     { fill: var(--c-sent) !important; }
.ct-point-success  { fill: var(--c-success) !important; }

/* Chartist donut */
.ct-series-a .ct-slice-donut          { stroke: var(--c-sent) !important; }
.ct-slice-donut.ct-slice-donut-error  { stroke: var(--c-error) !important; }
.ct-slice-donut.ct-slice-donut-sent   { stroke: var(--c-sent) !important; }
.ct-slice-donut.ct-slice-donut-opened { stroke: var(--c-opened) !important; }
.ct-slice-donut.ct-slice-donut-success { stroke: var(--c-success) !important; }
.ct-slice-donut.ct-slice-donut-clicked { stroke: var(--c-clicked) !important; }
.ct-slice-donut.ct-slice-donut-sending { stroke: var(--c-sending) !important; }

.ct-legend-error    { background-color: var(--c-error) !important; }
.ct-legend-sent     { background-color: var(--c-sent) !important; }
.ct-legend-opened   { background-color: var(--c-opened) !important; }
.ct-legend-success  { background-color: var(--c-success) !important; }
.ct-legend-clicked  { background-color: var(--c-clicked) !important; }
.ct-legend-sending  { background-color: var(--c-sending) !important; }

.ct-grid {
    stroke: var(--line) !important;
    stroke-dasharray: 2 4 !important;
}

.ct-label {
    fill: var(--fg-2) !important;
    color: var(--fg-2) !important;
    font-family: var(--font-mono) !important;
    font-size: 10px !important;
    letter-spacing: 0.04em;
}

.chartist-tooltip,
.chartist-pie-tooltip {
    background: var(--bg-elev) !important;
    color: var(--fg-0) !important;
    border: 1px solid var(--line-strong) !important;
    border-radius: 6px !important;
    font-family: var(--font-mono) !important;
    box-shadow: var(--shadow-md);
}

.chartist-tooltip:after {
    border-top-color: var(--bg-elev) !important;
}

/* Highcharts */
.highcharts-background {
    fill: transparent !important;
}

.highcharts-title,
.highcharts-axis-labels text,
.highcharts-legend-item text {
    fill: var(--fg-1) !important;
    color: var(--fg-1) !important;
    font-family: var(--font-mono) !important;
}

/* -----------------------------------------------------------------------------
   Timeline (campaign results)
   ----------------------------------------------------------------------------- */

.timeline {
    background-color: transparent !important;
    color: var(--fg-0);
}

.timeline-bar {
    background: var(--line-strong) !important;
}

.timeline-icon {
    box-shadow: 0 0 0 4px var(--bg-0);
}

.timeline > .subtitle,
.timeline-date {
    color: var(--fg-2) !important;
}

.timeline-event-details {
    color: var(--fg-1);
}

/* -----------------------------------------------------------------------------
   Login / reset password
   ----------------------------------------------------------------------------- */

.form-signin {
    background: var(--bg-1);
    border: 1px solid var(--line);
    border-radius: 12px;
    padding: 32px !important;
    box-shadow: var(--shadow-lg);
    margin-top: 80px !important;
    max-width: 380px !important;
}

.form-signin-heading {
    text-align: center;
    color: var(--fg-0) !important;
    margin: 14px 0 22px !important;
    font-size: 16px !important;
    letter-spacing: 0.02em;
}

.form-signin .form-control {
    margin-bottom: 8px;
}

.form-signin #logo {
    filter: brightness(0) invert(1) opacity(0.92);
    max-width: 64px;
    margin: 0 auto 8px;
}

#login-button {
    padding: 0 !important;
}

#password-strength {
    background: var(--bg-2);
    border: 1px solid var(--line);
    border-radius: 4px;
    overflow: hidden;
}

.progress {
    background: var(--bg-2) !important;
    box-shadow: none !important;
    border-radius: 4px;
    height: 6px !important;
}

.progress-bar {
    background: var(--accent) !important;
    box-shadow: 0 0 8px var(--accent-glow);
    transition: width var(--dur-slow) var(--ease) !important;
}

#password-strength-description {
    color: var(--fg-2) !important;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    letter-spacing: 0.04em;
}

/* -----------------------------------------------------------------------------
   Select2 (overrides flat-ui's white selects)
   ----------------------------------------------------------------------------- */

.select2-container--bootstrap .select2-selection,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    background: var(--bg-2) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    border-radius: 6px !important;
    min-height: 38px !important;
    transition: border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
}

.select2-container--bootstrap.select2-container--focus .select2-selection,
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
    border-color: var(--accent) !important;
    box-shadow: 0 0 0 3px var(--accent-soft) !important;
}

.select2-container--bootstrap .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection__rendered {
    color: var(--fg-0) !important;
    line-height: 36px !important;
    padding-left: 12px !important;
}

.select2-container--bootstrap .select2-selection__placeholder,
.select2-container--default .select2-selection__placeholder {
    color: var(--fg-3) !important;
}

.select2-dropdown {
    background: var(--bg-elev) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    box-shadow: var(--shadow-lg);
    border-radius: 8px !important;
    overflow: hidden;
}

.select2-results__option {
    color: var(--fg-1) !important;
    padding: 8px 12px !important;
    font-size: 13px;
}

.select2-results__option--highlighted,
.select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background: var(--bg-3) !important;
    color: var(--accent) !important;
}

.select2-search--dropdown .select2-search__field {
    background: var(--bg-2) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    border-radius: 4px;
}

.select2-selection__choice,
.select2-container--default .select2-selection--multiple .select2-selection__choice {
    background: var(--accent-soft) !important;
    color: var(--accent) !important;
    border: 1px solid var(--line-accent) !important;
    border-radius: 4px !important;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    padding: 2px 8px !important;
}

.select2-selection__choice__remove,
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: var(--accent) !important;
    margin-right: 4px !important;
}

/* -----------------------------------------------------------------------------
   SweetAlert2
   ----------------------------------------------------------------------------- */

.swal2-popup {
    background: var(--bg-1) !important;
    color: var(--fg-0) !important;
    border: 1px solid var(--line-strong) !important;
    border-radius: 12px !important;
    box-shadow: var(--shadow-lg) !important;
}

.swal2-title,
.swal2-html-container,
.swal2-content {
    color: var(--fg-0) !important;
    font-family: var(--font-sans) !important;
}

.swal2-title {
    font-family: var(--font-mono) !important;
    font-size: 18px !important;
    font-weight: 500 !important;
}

.swal2-styled.swal2-confirm,
.swal2-styled.swal2-cancel {
    border-radius: 6px !important;
    font-family: var(--font-mono) !important;
    font-size: 12px !important;
    letter-spacing: 0.04em;
    text-transform: lowercase;
    padding: 9px 18px !important;
    transition: all var(--dur-fast) var(--ease) !important;
}

.swal2-styled.swal2-confirm {
    background: var(--accent) !important;
    color: #04140a !important;
}

.swal2-styled.swal2-cancel {
    background: var(--bg-3) !important;
    color: var(--fg-0) !important;
}

.swal2-input,
.swal2-textarea,
.swal2-select {
    background: var(--bg-2) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--fg-0) !important;
    border-radius: 6px !important;
}

.swal2-icon.swal2-warning { border-color: #b8881e !important; color: #fcd34d !important; }
.swal2-icon.swal2-error   { border-color: #b94a4a !important; color: #fca5a5 !important; }
.swal2-icon.swal2-success { border-color: var(--accent) !important; color: var(--accent) !important; }
.swal2-icon.swal2-success .swal2-success-ring { border-color: var(--line-accent) !important; }
.swal2-icon.swal2-success [class^=swal2-success-line] { background-color: var(--accent) !important; }

/* -----------------------------------------------------------------------------
   Misc
   ----------------------------------------------------------------------------- */

.api_heading {
    background: var(--bg-2) !important;
    border: 1px solid var(--line-strong) !important;
    color: var(--accent) !important;
    font-family: var(--font-mono) !important;
    border-radius: 6px;
    padding: 10px 14px;
}

#loading {
    text-align: center;
    padding: 40px 0;
    color: var(--accent);
}

.fa-spinner.fa-spin {
    color: var(--accent);
}

.tooltip-inner {
    background: var(--bg-elev) !important;
    color: var(--fg-0) !important;
    border: 1px solid var(--line-strong);
    border-radius: 6px;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    padding: 6px 10px !important;
}

.tooltip.top .tooltip-arrow,
.tooltip.bottom .tooltip-arrow,
.tooltip.left .tooltip-arrow,
.tooltip.right .tooltip-arrow {
    border-top-color: var(--bg-elev) !important;
    border-bottom-color: var(--bg-elev) !important;
    border-left-color: var(--bg-elev) !important;
    border-right-color: var(--bg-elev) !important;
}

.popover {
    background: var(--bg-elev) !important;
    border: 1px solid var(--line-strong) !important;
    border-radius: 8px !important;
    box-shadow: var(--shadow-md);
    color: var(--fg-0);
}

.popover-title {
    background: transparent !important;
    border-bottom: 1px solid var(--line) !important;
    color: var(--fg-0) !important;
    font-family: var(--font-mono) !important;
}

.popover-content {
    color: var(--fg-1) !important;
}

.gophish-editor {
    background: var(--bg-2) !important;
    color: var(--fg-0) !important;
    border: 1px solid var(--line-strong) !important;
    border-radius: 6px;
    font-family: var(--font-mono) !important;
}

.cke_chrome,
.cke_inner,
.cke_top,
.cke_bottom,
.cke_contents {
    background: var(--bg-1) !important;
    border-color: var(--line-strong) !important;
    color: var(--fg-0) !important;
}

/* Sub-header (used in some pages) */
.sub-header {
    border-bottom-color: var(--line) !important;
    color: var(--fg-1);
}

/* Bootstrap pagination */
.pagination > li > a,
.pagination > li > span {
    background: transparent !important;
    border-color: var(--line) !important;
    color: var(--fg-1) !important;
}

.pagination > li > a:hover {
    background: var(--bg-2) !important;
    color: var(--accent) !important;
    border-color: var(--line-accent) !important;
}

.pagination > .active > a,
.pagination > .active > span {
    background: var(--accent-soft) !important;
    color: var(--accent) !important;
    border-color: var(--line-accent) !important;
}

/* Typeahead */
.tt-menu {
    background: var(--bg-elev) !important;
    border: 1px solid var(--line-strong) !important;
    border-radius: 8px !important;
    box-shadow: var(--shadow-md) !important;
    color: var(--fg-0);
}

.tt-suggestion {
    color: var(--fg-1);
    transition: background var(--dur-fast) var(--ease);
}

.tt-suggestion.tt-cursor {
    background: var(--bg-3) !important;
    color: var(--accent) !important;
}

.tt-hint {
    color: var(--fg-3) !important;
}

/* Fix some flat-ui leftovers */
.form-control[disabled],
.form-control[readonly] {
    background: var(--bg-1) !important;
    color: var(--fg-2) !important;
    cursor: not-allowed;
}

/* Subtle grid background on .main */
.main {
    min-height: calc(100vh - 52px);
}

/* =============================================================================
   Layer 2 — Motion-rich modals, sidebar icons, indicators
   ============================================================================= */

/* -----------------------------------------------------------------------------
   Sidebar — icons via FontAwesome (already loaded in the bundle)
   ----------------------------------------------------------------------------- */

.nav-sidebar > li > a {
    display: flex;
    align-items: center;
    gap: 12px;
}

.nav-sidebar > li > a::before {
    font-family: FontAwesome;
    font-weight: normal;
    font-size: 13px;
    width: 18px;
    text-align: center;
    color: var(--fg-2);
    transition:
        color var(--dur-fast) var(--ease),
        transform var(--dur-fast) var(--ease),
        text-shadow var(--dur) var(--ease);
    flex-shrink: 0;
}

.nav-sidebar > li > a[href="/"]::before                  { content: "\f0e4"; } /* dashboard */
.nav-sidebar > li > a[href="/campaigns"]::before          { content: "\f0a1"; } /* bullhorn */
.nav-sidebar > li > a[href="/groups"]::before             { content: "\f0c0"; } /* users */
.nav-sidebar > li > a[href="/templates"]::before          { content: "\f0e0"; } /* envelope */
.nav-sidebar > li > a[href="/landing_pages"]::before      { content: "\f0ac"; } /* globe */
.nav-sidebar > li > a[href="/sending_profiles"]::before   { content: "\f1d8"; } /* paper-plane */
.nav-sidebar > li > a[href="/settings"]::before           { content: "\f013"; } /* cog */
.nav-sidebar > li > a[href="/users"]::before              { content: "\f132"; } /* shield */
.nav-sidebar > li > a[href="/webhooks"]::before           { content: "\f0e7"; } /* bolt */
.nav-sidebar > li > a[href*="docs.getgophish"]::before    { content: "\f02d"; } /* book */
.nav-sidebar > li > a[href*="api-documentation"]::before  { content: "\f121"; } /* code */

.nav-sidebar > li > a:hover::before {
    color: var(--accent);
    transform: translateX(2px);
}

.nav-sidebar > .active > a::before {
    color: var(--accent);
    text-shadow: 0 0 12px var(--accent-glow);
}

/* External links get a tiny arrow */
.nav-sidebar > li > a[href^="http"]::after {
    content: "\f08e";
    font-family: FontAwesome;
    margin-left: auto;
    font-size: 9px;
    color: var(--fg-3);
    opacity: 0;
    transition: opacity var(--dur-fast) var(--ease);
}

.nav-sidebar > li > a[href^="http"]:hover::after {
    opacity: 1;
    color: var(--accent);
}

/* -----------------------------------------------------------------------------
   Modal — richer entrance with overshoot + accent rail + close icon glyph
   ----------------------------------------------------------------------------- */

@keyframes gp-modal-in {
    0% {
        opacity: 0;
        transform: translateY(-24px) scale(0.94);
        filter: blur(6px);
    }
    60% {
        filter: blur(0);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}

@keyframes gp-backdrop-in {
    from { opacity: 0; backdrop-filter: blur(0); -webkit-backdrop-filter: blur(0); }
    to   { opacity: 0.78; backdrop-filter: blur(6px) saturate(120%); -webkit-backdrop-filter: blur(6px) saturate(120%); }
}

.modal-backdrop.in {
    background: #000 !important;
    backdrop-filter: blur(6px) saturate(120%);
    -webkit-backdrop-filter: blur(6px) saturate(120%);
    animation: gp-backdrop-in var(--dur) var(--ease) forwards;
}

.modal.in .modal-dialog {
    animation: gp-modal-in 420ms cubic-bezier(0.34, 1.46, 0.64, 1) both;
}

.modal-content {
    position: relative;
    overflow: hidden;
}

.modal-content::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: linear-gradient(90deg,
        transparent 0%,
        var(--accent) 30%,
        var(--accent) 70%,
        transparent 100%);
    opacity: 0.5;
    z-index: 1;
}

.modal-header {
    position: relative;
    padding-left: 22px !important;
}

.modal-title {
    font-size: 15px !important;
    font-weight: 500 !important;
    letter-spacing: 0.01em;
    display: flex;
    align-items: center;
    gap: 10px;
}

.modal-title::before {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--accent);
    border-radius: 50%;
    box-shadow: 0 0 10px var(--accent-glow);
    flex-shrink: 0;
}

/* "X" close button — replace bootstrap's text "x" with a glyph */
.modal-header .close,
.swal2-close {
    width: 28px;
    height: 28px;
    border-radius: 6px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    font-size: 0 !important;
    background: transparent;
    border: 1px solid transparent;
    transition: all var(--dur-fast) var(--ease);
}

.modal-header .close::before,
.swal2-close::before {
    content: "\f00d";
    font-family: FontAwesome;
    font-size: 12px;
    color: var(--fg-2);
    transition: color var(--dur-fast) var(--ease), transform var(--dur) var(--ease);
}

.modal-header .close:hover,
.swal2-close:hover {
    background: var(--bg-3);
    border-color: var(--line-strong);
}

.modal-header .close:hover::before,
.swal2-close:hover::before {
    color: var(--accent);
    transform: rotate(90deg);
}

/* Stagger fade-in for modal body fields */
.modal.in .modal-body > * {
    animation: gp-fade-in var(--dur-slow) var(--ease) both;
}
.modal.in .modal-body > *:nth-child(1) { animation-delay: 80ms; }
.modal.in .modal-body > *:nth-child(2) { animation-delay: 120ms; }
.modal.in .modal-body > *:nth-child(3) { animation-delay: 160ms; }
.modal.in .modal-body > *:nth-child(4) { animation-delay: 200ms; }
.modal.in .modal-body > *:nth-child(5) { animation-delay: 240ms; }
.modal.in .modal-body > *:nth-child(n+6) { animation-delay: 280ms; }

/* -----------------------------------------------------------------------------
   SweetAlert2 — match the modal language
   ----------------------------------------------------------------------------- */

@keyframes gp-swal-in {
    0%   { opacity: 0; transform: scale(0.88) translateY(-16px); filter: blur(8px); }
    60%  { filter: blur(0); }
    100% { opacity: 1; transform: scale(1) translateY(0); filter: blur(0); }
}

@keyframes gp-swal-out {
    0%   { opacity: 1; transform: scale(1); }
    100% { opacity: 0; transform: scale(0.94); }
}

.swal2-popup.swal2-show {
    animation: gp-swal-in 380ms cubic-bezier(0.34, 1.46, 0.64, 1) !important;
}

.swal2-popup.swal2-hide {
    animation: gp-swal-out 200ms var(--ease-in) !important;
}

.swal2-backdrop-show {
    background: rgba(0, 0, 0, 0.72) !important;
    backdrop-filter: blur(6px) saturate(120%);
    -webkit-backdrop-filter: blur(6px) saturate(120%);
}

.swal2-popup {
    position: relative;
    overflow: hidden;
}

.swal2-popup::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
    opacity: 0.55;
}

.swal2-actions {
    gap: 10px;
}

/* -----------------------------------------------------------------------------
   Dropdown — slide-in
   ----------------------------------------------------------------------------- */

@keyframes gp-dropdown-in {
    from { opacity: 0; transform: translateY(-6px) scale(0.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.dropdown-menu,
.open > .dropdown-menu {
    transform-origin: top right;
    animation: gp-dropdown-in var(--dur) var(--ease);
}

/* -----------------------------------------------------------------------------
   Tooltip / popover entrance
   ----------------------------------------------------------------------------- */

.tooltip.in {
    animation: gp-fade-in var(--dur-fast) var(--ease);
}

.popover.in {
    animation: gp-fade-in var(--dur) var(--ease);
}

/* -----------------------------------------------------------------------------
   Status indicators — pulsing dot + chip
   ----------------------------------------------------------------------------- */

.label.label-success::before,
.label.label-info::before,
.label.label-warning::before,
.label.label-danger::before,
.label.label-clicked::before,
.label.label-primary::before {
    content: "";
    display: inline-block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    margin-right: 6px;
    vertical-align: 1px;
    background: currentColor;
    box-shadow: 0 0 6px currentColor;
}

/* "in progress" / "sending" labels get a live pulse */
.label[class*="-info"]::before,
.label[class*="-primary"]::before {
    animation: gp-pulse-dot 1.6s var(--ease) infinite;
}

/* -----------------------------------------------------------------------------
   Charts container — soften the dashboard donut surroundings
   ----------------------------------------------------------------------------- */

#overview_chart,
#sent_chart,
#opened_chart,
#clicked_chart,
#submitted_data_chart,
#email_reported_chart {
    position: relative;
    transition: transform var(--dur) var(--ease);
}

#sent_chart:hover,
#opened_chart:hover,
#clicked_chart:hover,
#submitted_data_chart:hover,
#email_reported_chart:hover {
    transform: translateY(-2px);
}

.chartist-legend {
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    letter-spacing: 0.04em;
    color: var(--fg-1);
}

.chartist-legend li {
    color: var(--fg-1) !important;
    transition: color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
}

.chartist-legend li:hover {
    color: var(--fg-0) !important;
    transform: translateX(2px);
}

/* -----------------------------------------------------------------------------
   Loading spinner — replace the giant fa-spin with a refined ring
   ----------------------------------------------------------------------------- */

@keyframes gp-spin {
    to { transform: rotate(360deg); }
}

@keyframes gp-glow-pulse {
    0%, 100% { box-shadow: 0 0 0 0 var(--accent-glow); }
    50%      { box-shadow: 0 0 0 12px transparent; }
}

#loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 60px 0;
    color: var(--fg-2);
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

#loading::after {
    content: "loading";
    color: var(--fg-3);
}

#loading .fa-spinner.fa-spin,
#loading .fa-spin.fa-4x {
    width: 38px;
    height: 38px;
    font-size: 0 !important;
    border: 2px solid var(--bg-3);
    border-top-color: var(--accent);
    border-right-color: var(--accent);
    border-radius: 50%;
    animation: gp-spin 0.8s linear infinite, gp-glow-pulse 2s var(--ease) infinite;
    box-shadow: 0 0 0 0 var(--accent-glow);
    display: inline-block;
    color: transparent !important;
}

#loading .fa-spinner.fa-spin::before,
#loading .fa-spin.fa-4x::before {
    content: "";
}

/* -----------------------------------------------------------------------------
   Table column-icon headers — color the FontAwesome icons in <th>
   (dashboard / campaigns tables use icon-only headers)
   ----------------------------------------------------------------------------- */

.table thead th .fa-envelope-o      { color: var(--c-sent); }
.table thead th .fa-envelope-open-o { color: var(--c-opened); }
.table thead th .fa-mouse-pointer   { color: var(--c-clicked); }
.table thead th .fa-exclamation-circle { color: var(--c-success); }
.table thead th .fa-bullhorn        { color: var(--c-reported); }

.table thead th .fa {
    transition: transform var(--dur) var(--ease), filter var(--dur) var(--ease);
}

.table thead th:hover .fa {
    transform: scale(1.15);
    filter: drop-shadow(0 0 6px currentColor);
}

/* Inline action icons in tables (edit / delete buttons) */
.table tbody td .btn .fa,
.table tbody td > .fa {
    transition: color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
}

.table tbody td .btn:hover .fa {
    transform: scale(1.1);
}

/* Generic icon hover in buttons */
.btn .fa,
.btn .glyphicon {
    transition: transform var(--dur-fast) var(--ease);
    margin-right: 6px;
}

.btn:hover .fa,
.btn:hover .glyphicon {
    transform: translateX(-1px);
}

.btn .fa:only-child,
.btn .glyphicon:only-child {
    margin-right: 0;
}

/* -----------------------------------------------------------------------------
   Timeline icons — lift them on the dark canvas
   ----------------------------------------------------------------------------- */

.timeline-icon {
    background: var(--bg-2);
    border: 1px solid var(--line-strong);
    box-shadow: 0 0 0 4px var(--bg-0), 0 0 18px rgba(0, 0, 0, 0.6);
    transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);
}

.timeline-entry:hover .timeline-icon {
    transform: scale(1.08);
    border-color: var(--line-accent);
    box-shadow:
        0 0 0 4px var(--bg-0),
        0 0 24px var(--accent-glow);
}

/* -----------------------------------------------------------------------------
   Sub-header section title decoration
   ----------------------------------------------------------------------------- */

h2 {
    display: flex;
    align-items: center;
    gap: 12px;
}

h2::before {
    content: "▎";
    color: var(--accent);
    font-size: 1em;
    line-height: 1;
    text-shadow: 0 0 12px var(--accent-glow);
}

/* -----------------------------------------------------------------------------
   Form-signin (login) — accent rail + breathing logo
   ----------------------------------------------------------------------------- */

@keyframes gp-breathe {
    0%, 100% { opacity: 0.92; }
    50%      { opacity: 1; }
}

.form-signin {
    position: relative;
    overflow: hidden;
    animation: gp-fade-in 480ms var(--ease) both;
}

.form-signin::before {
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--accent), transparent);
    opacity: 0.5;
}

.form-signin #logo {
    animation: gp-breathe 3s var(--ease) infinite;
}

/* -----------------------------------------------------------------------------
   Reduce motion respect
   ----------------------------------------------------------------------------- */

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