﻿html {
    font-size: 14px;
}

.btn:focus,
.btn:active:focus,
.btn-link.nav-link:focus,
.form-control:focus,
.form-check-input:focus {
    box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
    position: relative;
    min-height: 100%;
}

body {
    margin-bottom: 60px;
}

/* ======= Stylish, responsive login ======= */
.auth-wrap {
    min-height: calc(100vh - 56px); /* account for fixed navbar height */
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
    background: radial-gradient(1200px 600px at 10% -10%, rgba(13,110,253,.15), transparent 60%), radial-gradient(800px 400px at 110% 10%, rgba(13,110,253,.10), transparent 50%), linear-gradient(180deg, #ffffff, #f6f8fb);
}

.auth-card {
    width: 100%;
    max-width: 420px;
    border: 1px solid rgba(0,0,0,.06);
    border-radius: .75rem;
}

.brand-circle {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--bs-primary);
    color: #fff;
    font-weight: 700;
    letter-spacing: .5px;
}

.password-group .password-toggle {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}

.input-group .form-control {
    min-height: 2.75rem;
}

.btn-primary.w-100 {
    min-height: 2.75rem;
    font-weight: 600;
}

@media (max-width: 420px) {
    .auth-card .card-body {
        padding: 1.25rem !important;
    }
}

@media (min-width: 1600px) {
    .card .card-body {
        padding: 2.25rem;
    }
}



.compose-card .card-body {
    padding: 1.5rem;
}

.compose-card .form-label {
    font-weight: 600;
}

.tox .tox-editor-header {
    border-top-left-radius: .5rem;
    border-top-right-radius: .5rem;
}

.tox-tinymce {
    border-radius: .5rem;
    border-color: #e5e7eb;
}





/* ===========================
   Button-like sidebar menu
   =========================== */
.sidebar {
    background: #f8f9fa;
}

.sidebar-menu .menu-section-title {
    letter-spacing: .05em;
    font-weight: 600;
    font-size: .75rem;
    margin-bottom: .5rem;
}

.sidebar-menu .menu-group {
    display: grid;
    gap: .5rem;
}

.btn-menu {
    display: flex;
    align-items: center;
    gap: .5rem;
    width: 100%;
    justify-content: flex-start;
    border-radius: .5rem;
    text-align: left;
    padding: .6rem .75rem;
    transition: transform .06s ease, box-shadow .06s ease, background-color .06s ease, color .06s ease, border-color .06s ease;
}

    .btn-menu .icon {
        /* Works with Bootstrap Icons; harmless if you skip icons */
        width: 1.25rem;
        display: inline-flex;
        justify-content: center;
        font-size: 1.1rem;
        line-height: 1;
    }

    .btn-menu:hover {
        transform: translateY(-1px);
        box-shadow: 0 .25rem .5rem rgba(0,0,0,.05);
    }

    .btn-menu:active {
        transform: translateY(0);
        box-shadow: inset 0 .125rem .25rem rgba(0,0,0,.08);
    }
    /* Active selection: elevate and use primary colors */
    .btn-menu.active-item {
        color: #fff;
        background-color: var(--bs-primary);
        border-color: var(--bs-primary);
        box-shadow: 0 .35rem .75rem rgba(13,110,253,.25);
    }

        .btn-menu.active-item .icon {
            color: #fff;
        }
    /* Keyboard focus */
    .btn-menu:focus-visible {
        outline: 2px solid var(--bs-primary);
        outline-offset: 2px;
    }

/* Optional: tighter top spacing below the fixed navbar */
.app-wrap {
    display: flex;
    margin-top: 56px;
    min-height: calc(100vh - 56px);
}

.content {
    flex: 1 1 auto;
    min-width: 0;
}

/* KPI tiles */
.kpi-card {
    border-radius: 14px;
    padding: 16px;
    color: #fff;
    background: linear-gradient(145deg, #4c5bd6, #3749c7);
    box-shadow: 0 8px 18px rgba(0,0,0,.08);
}

    .kpi-card.kpi-2 {
        background: linear-gradient(145deg, #7b8bdc, #6477cf);
    }

    .kpi-card.kpi-3 {
        background: linear-gradient(145deg, #ff8aa2, #ff6e8e);
    }

.kpi-title {
    font-size: .9rem;
    font-weight: 600;
    opacity: .9;
}

.kpi-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 10px;
}

.kpi-icon {
    font-size: 1.6rem;
    opacity: .9;
}

.kpi-value {
    font-size: 2rem;
    font-weight: 700;
}

.kpi-sub {
    margin-top: 12px;
    font-size: .8rem;
    opacity: .8;
}

/* Welcome banner */
.welcome-banner {
    border-radius: 14px;
    background: #ffe9ec;
    border: 1px solid #ffd0d7;
    padding: 16px;
}

    .welcome-banner .banner-body {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
    }

    .welcome-banner .banner-title {
        color: #e65a79;
        font-weight: 700;
    }

    .welcome-banner .banner-text {
        color: #6c757d;
    }

    .welcome-banner .banner-art {
        font-size: 54px;
        color: #ff8aa2;
        opacity: .8;
    }

@media (max-width: 768px) {
    .welcome-banner .banner-art {
        display: none;
    }
}

/* Events & calendar cards */
.events-card, .calendar-card {
    border-radius: 14px;
}

.calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.cal-nav {
    border: none;
    background: #eee;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cal-month {
    text-align: center;
    font-weight: 800;
    color: #ff6e8e;
    text-transform: uppercase;
}

.cal-today {
    text-align: center;
    font-size: .9rem;
    color: #9aa0a6;
    margin-top: -4px;
}

.calendar {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cal-row {
    display: grid;
    grid-template-columns: repeat(7,1fr);
    gap: 6px;
}

    .cal-row.cal-head > div {
        text-align: center;
        color: #a0a5ff;
        font-weight: 700;
        padding: 6px 0;
        border-bottom: 1px solid #f1f3f5;
    }

.cal-cell {
    border: 1px solid #f0f1f5;
    background: #fff;
    border-radius: 8px;
    padding: 10px 0;
    text-align: center;
    font-weight: 600;
    color: #5465ff;
}

    .cal-cell.today {
        outline: 2px solid #ff7a96;
        outline-offset: -2px;
    }

    .cal-cell.selected {
        background: #eef1ff;
        border-color: #cfd6ff;
    }

    .cal-cell.muted {
        color: #c5c9d3;
        background: #fafbff;
    }

/* Auth (login) layout for _AuthLayout */
.auth-body {
    background: #f6f7fb;
}

.auth-center {
    min-height: calc(100vh - 56px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

    .auth-center .card {
        width: 100%;
        max-width: 520px;
        border-radius: 16px;
    }

/* Sidebar collapse (mini) */
.sidebar {
    transition: width .2s ease;
}

    .sidebar .btn-menu {
        display: flex;
        align-items: center;
        gap: .5rem;
    }

        .sidebar .btn-menu .icon {
            width: 1.25rem;
            display: inline-flex;
            justify-content: center;
        }

/* collapsed: keep icons, hide text only */
body.sidebar-collapsed .sidebar {
    width: 72px;
}

    body.sidebar-collapsed .sidebar .menu-section-title {
        display: none;
    }
    /* Hide all label spans except the .icon */
    body.sidebar-collapsed .sidebar .btn-menu span:not(.icon) {
        display: none;
    }

    body.sidebar-collapsed .sidebar .btn-menu {
        justify-content: center;
    }

/* Optional: compact text mode (smaller font + padding) */
.sidebar-compact .sidebar .btn-menu {
    padding: .4rem .5rem;
    font-size: .9rem;
}

.sidebar-compact .sidebar .menu-section-title {
    font-size: .72rem;
}

/* Collapsible sections (no Bootstrap required) */
.sidebar .menu-section-title {
    user-select: none;
    text-transform: uppercase;
    font-weight: 700;
    font-size: .75rem;
    color: #999;
    display: flex;
    align-items: center;
    gap: .5rem;
}

    .sidebar .menu-section-title::after {
        content: "▾";
        margin-left: auto;
        font-size: .8rem;
        transition: transform .2s ease;
    }

    .sidebar .menu-section-title.collapsed::after {
        transform: rotate(-90deg);
    }

.sidebar .menu-group.collapsed {
    display: none;
}


/* Communication page polish */
.compose-card .card-body {
    padding: 1.5rem;
}

.compose-card .form-label {
    font-weight: 600;
}

.compose-actions .btn {
    min-width: 96px;
}

#eventsList .list-group-item {
    background: transparent;
}

/* Make TinyMCE chrome fit your UI */
.tox .tox-editor-header {
    border-top-left-radius: .5rem;
    border-top-right-radius: .5rem;
}

.tox-tinymce {
    border-radius: .5rem;
    border-color: #e5e7eb;
}


/* password toggle*/
/* Password toggle (icon overlay on the right) */
.auth-password-wrap {
    position: relative;
}

/* The icon-only button */
.password-toggle-icon {
    position: absolute;
    top: 50%;
    right: .625rem; /* ~10px from the right edge */
    transform: translateY(-50%);
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: #6c757d;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

    /* Hover/focus states */
    .password-toggle-icon:hover {
        color: #0d6efd;
    }

    .password-toggle-icon:focus {
        outline: none;
        box-shadow: 0 0 0 .2rem rgba(13,110,253,.25);
        border-radius: .25rem;
    }

/* Ensure the input is tall enough and has space for the icon */
.auth-card .input-group .form-control {
    min-height: 44px;
}

.auth-card .input-group-text {
    height: 44px;
}


/* Layout spacing: space between sidebar and content + inner padding */
.app-wrap { 
  display: flex; 
  margin-top: 56px;              /* your fixed navbar height */
  min-height: calc(100vh - 56px);
  gap: 1rem;                     /* <— space between sidebar and content */
}
.sidebar { width: 240px; flex: 0 0 240px; }

.content { 
  flex: 1 1 auto; 
  min-width: 0; 
  padding: 1rem;                 /* <— inner left/right padding for all pages */
}
@media (min-width: 768px)   { .content { padding: 1.25rem 1.5rem; } }
@media (min-width: 1200px)  { .content { padding: 1.5rem 2rem; } }


/* Month card polish (already inline above, keep here if you prefer global) */
.month-card {
    box-shadow: 0 8px 18px rgba(0,0,0,.04);
}

/* Chips already defined inline; include globally to reuse elsewhere */
.chip {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    border-radius: 999px;
    padding: .1rem .45rem;
    font-size: .72rem;
    color: #fff;
}

    .chip .x {
        cursor: pointer;
        margin-left: .25rem;
        font-weight: 700;
    }



/* Space between sidebar and content, and inner padding */
.app-wrap {
    gap: 1rem;
}

.content {
    padding: 1rem;
}

@media (min-width: 768px) {
    .content {
        padding: 1.25rem 1.5rem;
    }
}

@media (min-width: 1200px) {
    .content {
        padding: 1.5rem 2rem;
    }
}


/* Global content padding and gap (if you don't already have it) */
.app-wrap {
    gap: 1rem;
}

.content {
    padding: 1rem;
}

@media (min-width: 768px) {
    .content {
        padding: 1.25rem 1.5rem;
    }
}

@media (min-width: 1200px) {
    .content {
        padding: 1.5rem 2rem;
    }
}

/* Base layout */
.app-wrap {
    display: flex;
    margin-top: 56px; /* height of fixed-top navbar */
    min-height: calc(100vh - 56px);
}

.sidebar {
    width: 260px; /* desktop width */
    border-right: 1px solid rgba(0,0,0,.1);
    position: sticky;
    top: 56px;
    height: calc(100vh - 56px);
    overflow-y: auto;
}

.content {
    flex: 1 1 auto;
    min-width: 0;
}

/* ===== Mobile: use offcanvas instead of the desktop sidebar ===== */
@media (max-width: 991.98px) {
    .sidebar {
        display: none !important;
    }
    /* hide the desktop sidebar */
    .app-wrap {
        flex-direction: column;
    }
}

/* Optional: offcanvas menu spacing for button-like menu items */
.offcanvas .btn-menu {
    margin-bottom: .5rem;
}

/* Logo in the dark navbar */
.brand-logo {
    height: 28px; /* fits a 56px-high Bootstrap navbar */
    width: auto;
    display: block;
}

.navbar-dark .brand-text {
    color: #fff;
    font-weight: 600;
}

/* Optional: hide text on very small screens if not done via d-none classes */
/*
@media (max-width: 575.98px) {
  .brand-text { display: none; }
}
*/

