p.error {
    margin-top: 200px;
}

body {
     padding-top: 0px;
     background-color: #E6E6E6;

}

.alert {
     border-radius: 0px;
}

.margin-block {
     margin-bottom: 6px;
     /*min-height: 300px;*/
}

body .margin-block:last-child {
     margin-bottom: 200px;
}

.map-container {
    width: 100%;
    height: 500px;
    display: none;
}

.map-element {
    width: 100%;
    height: 90%;
}

.cover-game {
    width: 220px;
    height: 310px;
}

.remove-list {
	margin: 0px;
	padding: 0px;
}

.hidden-hp {
     display: none;
}

.input-hide-container {
     display: block;
     width: 200px;
     background: transparent; none left top no-repeat;
}

.input-hide-text {
     color:#2E2E2E; 
     font-weight: bold;
     background-color: #FAFAFA;
     line-height: 100px;
     text-align: center;
     position: absolute;
     top:0;
     bottom: 0;
     right:0;
     height: 100% !important;
     width: 100%;
     cursor: pointer;
}

.input-hide {
     position: absolute;
     top:0;
     bottom: 0;
     right:0;
     height: 100% !important;
     width: 100%;
     opacity: 0;
}

.form-actions {
     padding-top:10px;
     border-top: solid 1px #E6E6E6;
}

.btn {
    margin-bottom: 5px;
}

.btn-yellow {
    color: #FFFFFF;
    background-color: #F7FE2E;
    border-color: #FFFF00;
}

hr {
    margin-top: 15px;
    margin-bottom: 15px;
}

.right {
     float: right;
}

.text-center {
     text-align: center;
}

.center {
     display: block;
     margin-left: auto !important;
     margin-right: auto !important;
}

.sidebar-nav {
     padding: 9px 0;
}

.thumb {
     margin: 4px;
     padding: 4px;
     border: solid 1px #E6E6E6;
}

.block-title {
     background-color: #08C;
     padding: 10px 0px 10px 4px;
     width: 100%;
     height: 20px;
     font: bold 18px "Helvetica Neue",Helvetica,Arial,sans-serif;
     -webkit-border-radius: 4px;
     border-radius: 4px;
     color: #FAFAFA;
     margin-bottom: 10px;
}

.ajax-loader {
     background-image: url('../img/ajax-loader.gif');
     background-color: transparent;
     background-repeat: no-repeat;
     width: 160px;
     height: 24px;
}

.ajax-loader2 {
     background-image: url('../img/ajax-loader2.gif');
     background-color: transparent;
     background-repeat: no-repeat;
     width: 16px;
     height: 11px;
}

/**************

***************/

.hide-input {
     background-color: transparent;
     border: solid 1px #FFFFFF:
     margin: 0px;
     padding: 0px; 
}


#block-main {
    padding: 0px;
    margin: 0px;
}

.main-block {
    margin-bottom: 20px;
}

.search-box {
    margin-bottom: 20px;
    width: 100%;
    box-shadow: 1px 2px 5px #BDBDBD;
    border: solid 1px #D8D8D8;
}

.search-box .search-box-title a {
    color: #424242;
    text-decoration: none; 
}

.search-box .search-box-title a:hover {
    text-shadow:0px 1px 2px #BDBDBD;
}

.search-box .search-box-title {
    text-transform: uppercase;
    font: bold 12px 'Titillium Web';
    color: #585858;
    padding: 10px;
    width: 100%;
}

.search-box .search-box-content {
    padding: 10px;
    
}

.slide-index {
    width: 100%;
    height: 600px;
}

/*
 * Sidebar
 */

@media only screen and (max-width: 760px) {

    .sidebar {
        position: fixed;
        z-index: 99;
        display: none;
    }
    
}

.sublink-1 {
    padding-left: 20px;
    background-color: #E6E6E6; 
    border-radius: 6px;
}

.sublink-2 {
    padding-left: 30px;
    border-radius: 6px;
    font-weight: bold;
}

.sidebar-sticky {
  position: relative;
  top: 0;
  height: calc(100vh - 48px);
  padding-top: .5rem;
  overflow-x: hidden;
  overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
}

@supports ((position: -webkit-sticky) or (position: sticky)) {
  .sidebar-sticky {
    position: -webkit-sticky;
    position: sticky;
  }
}

.sidebar .nav-link {
  font-weight: 500;
  color: #333;
}

.sidebar .nav-link .feather {
  margin-right: 4px;
  color: #999;
}

.sidebar .nav-link.active {
  color: #007bff;
}

.sidebar .nav-link:hover .feather,
.sidebar .nav-link.active .feather {
  color: inherit;
}

.sidebar-heading {
  font-size: .75rem;
  text-transform: uppercase;
}






.route-list-container {
    padding-top: 5px;
    margin: 0px;
}   

.route-list-container h2{
    color: #FFFFFF;
}   

.route-list-container .remove-route {
    margin: 5px;
}

.route-list-container .route-boton {
    margin: 5px;
}

.route-list {
    padding: 0px;
    height: 100%;
}   

.route-list img {
    float: left;
    width: 40px;
    height: 40px;
    margin-right: 5px;
}

.route-list li {
    border-radius: 0px;
    padding: 0px;
}

.route-list .place-name {
    font-size: 0.7rem;
}

.gj-timepicker-bootstrap .btn-outline-secondary {
    height: 100%;
}
/* ========================================================================== */
/* Panel administrativo base - UI moderna                                    */
/* ========================================================================== */

:root {
    --admin-bg: #f4f7fb;
    --admin-surface: #ffffff;
    --admin-sidebar: #0d2342;
    --admin-sidebar-soft: #17375f;
    --admin-text: #172033;
    --admin-muted: #728096;
    --admin-border: #e7ecf3;
    --admin-primary: #2563eb;
    --admin-primary-soft: #eaf1ff;
    --admin-success: #10b981;
    --admin-purple: #7c3aed;
    --admin-orange: #f59e0b;
    --admin-shadow: 0 10px 30px rgba(15, 34, 58, .08);
}

* {
    box-sizing: border-box;
}

body.admin-body,
body.login-body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    color: var(--admin-text);
}

body.admin-body {
    margin: 0;
    padding: 0;
    min-height: 100vh;
    background: var(--admin-bg);
}

.admin-page {
    min-height: calc(100vh - 72px);
}

.admin-topbar {
    position: sticky;
    top: 0;
    z-index: 1035;
    height: 72px;
    padding: 0;
    background: rgba(255, 255, 255, .96);
    border-bottom: 1px solid var(--admin-border);
    box-shadow: 0 1px 12px rgba(15, 34, 58, .04);
    backdrop-filter: blur(14px);
}

.admin-brand-wrap {
    width: 260px;
    height: 72px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 18px;
    background: var(--admin-sidebar);
}

.admin-brand,
.admin-brand:hover,
.admin-brand:focus {
    display: flex;
    align-items: center;
    gap: 11px;
    color: #fff;
    text-decoration: none;
}

.admin-brand-icon,
.login-brand-mark {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: linear-gradient(135deg, #3b82f6, #06b6d4);
    color: #fff;
    box-shadow: 0 8px 20px rgba(37, 99, 235, .28);
}

.admin-brand-copy {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.admin-brand-copy strong {
    font-size: .96rem;
    letter-spacing: -.01em;
}

.admin-brand-copy small {
    margin-top: 3px;
    font-size: .68rem;
    color: rgba(255, 255, 255, .64);
    text-transform: uppercase;
    letter-spacing: .08em;
}

.admin-menu-toggle {
    display: none;
    width: 38px;
    height: 38px;
    border: 0;
    border-radius: 10px;
    color: #fff;
    background: rgba(255, 255, 255, .10);
    cursor: pointer;
}

.admin-topbar-spacer {
    flex: 1 1 auto;
}

.admin-session {
    display: flex;
    align-items: center;
    gap: 12px;
    padding-right: 22px;
}

.admin-session-copy {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.25;
}

.admin-session-copy span {
    font-size: .84rem;
    color: #445066;
}

.admin-session-copy strong {
    color: var(--admin-text);
}

.admin-session-copy small {
    margin-top: 3px;
    font-size: .7rem;
    color: var(--admin-muted);
}

.admin-session-avatar {
    width: 42px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border: 3px solid #edf3ff;
    border-radius: 50%;
    background: var(--admin-primary);
    color: #fff;
    font-weight: 800;
    text-decoration: none;
}

.admin-session-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.admin-session-avatar:hover {
    color: #fff;
    text-decoration: none;
}

.admin-logout {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--admin-border);
    border-radius: 11px;
    color: #64748b;
    background: #fff;
    text-decoration: none;
    transition: all .18s ease;
}

.admin-logout:hover {
    color: #dc2626;
    border-color: #fecaca;
    background: #fff5f5;
    text-decoration: none;
}

.admin-shell {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    min-height: calc(100vh - 72px);
}

.admin-sidebar {
    position: sticky;
    top: 72px;
    height: calc(100vh - 72px);
    z-index: 1020;
    width: 260px;
    display: flex;
    flex-direction: column;
    padding: 18px 14px 16px;
    color: #dbe8f8;
    background: var(--admin-sidebar);
    border-top: 1px solid rgba(255, 255, 255, .04);
}

.admin-sidebar-label {
    padding: 0 12px 11px;
    color: rgba(219, 232, 248, .45);
    font-size: .66rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .12em;
}

.admin-sidebar .sidebar-sticky {
    position: relative;
    top: auto;
    height: auto;
    flex: 1 1 auto;
    padding: 0;
    overflow-y: auto;
}

.admin-sidebar-nav {
    gap: 5px;
}

.admin-sidebar .nav-item {
    width: 100%;
}

.admin-sidebar .nav-link {
    min-height: 44px;
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 10px 12px;
    border-radius: 10px;
    color: rgba(226, 237, 250, .82);
    font-size: .85rem;
    font-weight: 600;
    transition: all .18s ease;
}

.admin-sidebar .nav-link i {
    width: 20px;
    color: rgba(226, 237, 250, .62);
    text-align: center;
    font-size: .95rem;
}

.admin-sidebar .nav-link:hover,
.admin-sidebar .nav-link.active {
    color: #fff;
    background: linear-gradient(90deg, rgba(59, 130, 246, .34), rgba(59, 130, 246, .12));
    text-decoration: none;
}

.admin-sidebar .nav-link:hover i,
.admin-sidebar .nav-link.active i {
    color: #7dd3fc;
}

.admin-sidebar .sublink-1,
.admin-sidebar .sublink-2 {
    margin: 2px 0 7px;
    padding: 3px 0 3px 16px;
    border-left: 1px solid rgba(255, 255, 255, .08);
    border-radius: 0;
    background: transparent;
}

.admin-sidebar .sublink-1 .nav-link,
.admin-sidebar .sublink-2 .nav-link {
    min-height: 36px;
    padding: 7px 10px;
    font-size: .78rem;
    font-weight: 500;
    color: rgba(226, 237, 250, .62);
}

.admin-sidebar-footer {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 14px;
    padding: 12px;
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 12px;
    background: rgba(255, 255, 255, .04);
    color: rgba(226, 237, 250, .52);
    font-size: .68rem;
    line-height: 1.35;
}

.admin-main {
    width: 100%;
    min-width: 0;
    min-height: calc(100vh - 72px);
    margin-left: 0;
    padding: 26px 28px 46px;
}

.admin-shell-no-sidebar {
    grid-template-columns: minmax(0, 1fr);
}

.admin-shell-no-sidebar .admin-main {
    width: 100%;
    margin-left: 0;
}

.admin-secondary-sidebar {
    margin-top: 22px;
}

.admin-flash-wrap {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 1060;
    max-width: 420px;
}

/* Dashboard */
.dashboard-wrap {
    max-width: 1500px;
    margin: 0 auto;
    width: 100%;
}

.admin-main,
.dashboard-grid,
.dashboard-stats,
.dashboard-card,
.dashboard-welcome {
    min-width: 0;
}

.dashboard-welcome {
    min-height: 160px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    padding: 28px 30px;
    border-radius: 22px;
    background: linear-gradient(125deg, #1557d5 0%, #2563eb 50%, #0ea5e9 100%);
    color: #fff;
    box-shadow: 0 18px 40px rgba(37, 99, 235, .20);
    overflow: hidden;
    position: relative;
}

.dashboard-welcome::after {
    content: '';
    position: absolute;
    width: 260px;
    height: 260px;
    right: -80px;
    top: -120px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
}

.dashboard-welcome-user {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 18px;
}

.dashboard-avatar {
    width: 72px;
    height: 72px;
    flex: 0 0 72px;
    object-fit: cover;
    border: 4px solid rgba(255, 255, 255, .28);
    border-radius: 20px;
    box-shadow: 0 8px 26px rgba(0, 0, 0, .12);
}

.dashboard-avatar-fallback {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .18);
    color: #fff;
    font-size: 1.6rem;
    font-weight: 800;
}

.dashboard-eyebrow {
    margin-bottom: 5px;
    color: rgba(255, 255, 255, .72);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .11em;
}

.dashboard-welcome h1 {
    margin: 0 0 7px;
    font-size: clamp(1.55rem, 2.3vw, 2.15rem);
    font-weight: 800;
    letter-spacing: -.035em;
}

.dashboard-welcome p {
    max-width: 700px;
    margin: 0;
    color: rgba(255, 255, 255, .80);
    font-size: .9rem;
}

.dashboard-profile-btn {
    position: relative;
    z-index: 1;
    min-width: 120px;
    padding: 10px 15px;
    border: 0;
    border-radius: 11px;
    font-size: .8rem;
    font-weight: 700;
    color: #1d4ed8;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .08);
}

.dashboard-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    margin: 20px 0;
}

.dashboard-stat {
    min-height: 118px;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 20px;
    border: 1px solid var(--admin-border);
    border-radius: 16px;
    background: var(--admin-surface);
    box-shadow: var(--admin-shadow);
    color: inherit;
    text-decoration: none;
    transition: transform .18s ease, box-shadow .18s ease;
}

.dashboard-stat:hover {
    color: inherit;
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 15px 34px rgba(15, 34, 58, .11);
}

.dashboard-stat-icon {
    width: 48px;
    height: 48px;
    flex: 0 0 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    font-size: 1.05rem;
}

.icon-blue { color: #2563eb; background: #eaf1ff; }
.icon-purple { color: #7c3aed; background: #f2eaff; }
.icon-green { color: #059669; background: #e9fbf4; }
.icon-orange { color: #d97706; background: #fff5df; }

.dashboard-stat-data {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.dashboard-stat-data small {
    color: var(--admin-muted);
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.dashboard-stat-data strong {
    margin: 2px 0;
    font-size: 1.55rem;
    line-height: 1.1;
    letter-spacing: -.04em;
}

.dashboard-stat-data em {
    color: #8290a4;
    font-size: .7rem;
    font-style: normal;
}

.dashboard-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(300px, .8fr);
    gap: 18px;
}

.dashboard-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--admin-border);
    border-radius: 18px;
    background: var(--admin-surface);
    box-shadow: var(--admin-shadow);
}

.dashboard-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 15px;
    margin-bottom: 16px;
}

.dashboard-card-head small {
    display: block;
    margin-bottom: 2px;
    color: var(--admin-muted);
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
}

.dashboard-card-head h2 {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: -.02em;
}

.dashboard-card-head > a {
    color: var(--admin-primary);
    font-size: .74rem;
    font-weight: 700;
}

.dashboard-activity-list {
    display: flex;
    flex-direction: column;
}

.dashboard-activity-item {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    padding: 13px 0;
    border-top: 1px solid #eef2f7;
}

.dashboard-activity-item:first-child {
    border-top: 0;
}

.activity-icon {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    color: #2563eb;
    background: #edf4ff;
    font-size: .8rem;
}

.activity-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.activity-copy strong {
    overflow: hidden;
    color: #283548;
    font-size: .78rem;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.activity-copy span,
.dashboard-activity-item time {
    color: #8a97aa;
    font-size: .68rem;
}

.dashboard-activity-item time {
    white-space: nowrap;
}

.dashboard-empty {
    min-height: 210px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 7px;
    color: #8a97aa;
    text-align: center;
}

.dashboard-empty i {
    font-size: 1.7rem;
    color: #b7c2d0;
}

.dashboard-empty strong {
    color: #4e5b6f;
    font-size: .86rem;
}

.dashboard-empty span {
    max-width: 320px;
    font-size: .72rem;
}

.dashboard-quick-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.dashboard-quick-grid a {
    min-height: 102px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 12px;
    border: 1px solid #e9eef5;
    border-radius: 14px;
    color: #3d4a5e;
    background: #fbfcfe;
    text-decoration: none;
    text-align: center;
    transition: all .18s ease;
}

.dashboard-quick-grid a:hover {
    color: var(--admin-primary);
    border-color: #cfe0ff;
    background: #f5f8ff;
    text-decoration: none;
    transform: translateY(-1px);
}

.dashboard-quick-grid i {
    width: 38px;
    height: 38px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 11px;
    color: var(--admin-primary);
    background: var(--admin-primary-soft);
}

.dashboard-quick-grid span {
    font-size: .72rem;
    font-weight: 700;
}

/* CRUD genérico */
.main-block.card,
.card.main-block {
    margin: 0 auto 20px;
    border: 1px solid var(--admin-border);
    border-radius: 18px;
    background: #fff;
    box-shadow: var(--admin-shadow);
    overflow: visible;
}

.main-block-header,
.main-block .card-header {
    min-height: 62px;
    display: flex;
    align-items: center;
    padding: 17px 20px;
    border-bottom: 1px solid var(--admin-border);
    border-radius: 18px 18px 0 0 !important;
    background: #fff;
}

.main-block-title,
.main-block .card-header {
    color: #1f2a3d;
    font-size: .95rem;
    font-weight: 800;
}

.main-block-title i,
.main-block .card-header > i {
    margin-right: 8px;
    color: var(--admin-primary);
}

.main-block-body,
.main-block .card-body {
    padding: 20px;
}

.search-box {
    border: 1px solid var(--admin-border);
    border-radius: 14px;
    box-shadow: none;
    background: #fbfcfe;
    overflow: hidden;
}

.search-box .search-box-title {
    padding: 12px 14px;
    color: #46546a;
    background: #f7f9fc;
    border-bottom: 1px solid #edf1f6;
    font-family: 'Inter', sans-serif;
    font-size: .72rem;
    font-weight: 800;
}

.search-box .search-box-content {
    padding: 14px;
}

.form-control,
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    min-height: 42px;
    border: 1px solid #dbe3ee;
    border-radius: 10px;
    background: #fff;
    box-shadow: none;
    font-size: .82rem;
}

.form-control:focus,
.select2-container--default.select2-container--focus .select2-selection--multiple {
    border-color: #8bb2ff;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .08);
}

label,
.form-group label {
    color: #526176;
    font-size: .74rem;
    font-weight: 700;
}

.form-actions {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--admin-border);
}

.btn {
    min-height: 38px;
    margin: 2px 5px 2px 0;
    padding: 8px 13px;
    border-radius: 9px;
    font-size: .76rem;
    font-weight: 700;
    box-shadow: none !important;
}

.btn-sm {
    min-height: 32px;
    padding: 6px 9px;
    border-radius: 8px;
    font-size: .7rem;
}

.btn-success { background: #0f9f72; border-color: #0f9f72; }
.btn-info { background: #2563eb; border-color: #2563eb; }
.btn-primary { background: #2563eb; border-color: #2563eb; }
.btn-danger { background: #ef4444; border-color: #ef4444; }
.btn-secondary { background: #64748b; border-color: #64748b; }

.table,
table {
    margin-bottom: 0;
    color: #344155;
    font-size: .75rem;
}

.table thead th,
table thead th {
    padding: 12px 10px;
    border-top: 0;
    border-bottom: 1px solid #e7ecf3;
    color: #748196;
    background: #f8fafc;
    font-size: .67rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
    vertical-align: middle;
}

.table td,
table td {
    padding: 12px 10px;
    border-top: 1px solid #edf1f6;
    vertical-align: middle;
}

.table tbody tr:hover,
table tbody tr:hover {
    background: #fbfdff;
}

.badge {
    border-radius: 8px;
    padding: 6px 8px;
    font-weight: 700;
}

.pagination .page-link {
    border-color: #e2e8f0;
    color: #53627a;
    font-size: .75rem;
}

.pagination .active .page-link,
.pagination .page-item.active .page-link {
    background: var(--admin-primary);
    border-color: var(--admin-primary);
}

.dm-uploader.card {
    border: 1px dashed #bfcbe0;
    border-radius: 14px;
    background: #f9fbff;
}

/* Login */
body.login-body {
    position: relative;
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    background: #edf3fb;
}

.login-background-orb {
    position: fixed;
    z-index: 0;
    border-radius: 50%;
    filter: blur(1px);
    pointer-events: none;
}

.login-orb-one {
    width: 430px;
    height: 430px;
    top: -180px;
    right: -140px;
    background: rgba(37, 99, 235, .12);
}

.login-orb-two {
    width: 360px;
    height: 360px;
    left: -170px;
    bottom: -150px;
    background: rgba(14, 165, 233, .10);
}

.login-shell {
    position: relative;
    z-index: 1;
    width: min(1120px, calc(100% - 40px));
    min-height: 650px;
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    margin: 42px auto;
    border: 1px solid rgba(255, 255, 255, .75);
    border-radius: 28px;
    background: #fff;
    box-shadow: 0 30px 80px rgba(21, 42, 76, .15);
    overflow: hidden;
}

.login-visual-panel {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 42px;
    color: #fff;
    background: linear-gradient(145deg, #0c2445 0%, #123867 50%, #0f5bad 100%);
    overflow: hidden;
}

.login-visual-panel::before,
.login-visual-panel::after {
    content: '';
    position: absolute;
    border-radius: 50%;
    background: rgba(255, 255, 255, .055);
}

.login-visual-panel::before {
    width: 340px;
    height: 340px;
    right: -150px;
    top: 50px;
}

.login-visual-panel::after {
    width: 240px;
    height: 240px;
    left: -110px;
    bottom: -70px;
}

.login-brand-lockup {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: 12px;
}

.login-brand-lockup > div {
    display: flex;
    flex-direction: column;
}

.login-brand-lockup strong {
    font-size: 1rem;
}

.login-brand-lockup small {
    margin-top: 2px;
    color: rgba(255, 255, 255, .58);
    font-size: .68rem;
    text-transform: uppercase;
    letter-spacing: .08em;
}

.login-visual-copy {
    position: relative;
    z-index: 1;
    margin: auto 0;
}

.login-pill {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 10px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 999px;
    color: #d8edff;
    background: rgba(255, 255, 255, .08);
    font-size: .7rem;
    font-weight: 700;
}

.login-visual-copy h1 {
    max-width: 520px;
    margin: 22px 0 14px;
    font-size: clamp(2rem, 3.4vw, 3.05rem);
    line-height: 1.06;
    font-weight: 800;
    letter-spacing: -.045em;
}

.login-visual-copy p {
    max-width: 500px;
    margin: 0;
    color: rgba(231, 242, 255, .70);
    font-size: .9rem;
    line-height: 1.65;
}

.login-feature-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 30px;
}

.login-feature-grid > div {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 11px 12px;
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 12px;
    background: rgba(255, 255, 255, .055);
    color: rgba(240, 248, 255, .82);
    font-size: .72rem;
    font-weight: 600;
}

.login-feature-grid i {
    color: #7dd3fc;
}

.login-form-panel {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 45px 52px;
    background: #fff;
}

.login-card {
    width: 100%;
    max-width: 420px;
}

.login-card-heading {
    margin-bottom: 26px;
}

.login-mobile-brand {
    display: none;
}

.login-card-heading > small {
    color: var(--admin-primary);
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .12em;
}

.login-card-heading h2 {
    margin: 6px 0 7px;
    font-size: 1.85rem;
    font-weight: 800;
    letter-spacing: -.035em;
}

.login-card-heading p {
    margin: 0;
    color: #7b879a;
    font-size: .8rem;
    line-height: 1.5;
}

.login-form .form-group {
    margin-bottom: 17px;
}

.login-form label {
    margin-bottom: 7px;
    color: #425067;
    font-size: .74rem;
    font-weight: 700;
}

.login-form .form-control {
    min-height: 48px;
    padding-left: 42px;
    border-radius: 12px;
    background: #fbfcfe;
}

.login-field-icon {
    position: relative;
}

.login-field-icon > i {
    position: absolute;
    z-index: 4;
    left: 15px;
    top: 39px;
    color: #9aa7b8;
    font-size: .86rem;
}

.login-submit-wrap {
    margin-top: 8px;
}

.login-submit-wrap .btn {
    width: 100%;
    min-height: 48px;
    margin: 0;
    border: 0;
    border-radius: 12px;
    background: linear-gradient(90deg, #2563eb, #0ea5e9);
    font-size: .8rem;
    box-shadow: 0 10px 24px rgba(37, 99, 235, .22) !important;
}

.login-security-note {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    margin-top: 20px;
    color: #93a0b1;
    font-size: .68rem;
}

.login-security-note i {
    color: #6f8198;
}

.login-flash-wrap {
    position: fixed;
    z-index: 10;
    right: 20px;
    bottom: 20px;
    max-width: 420px;
}

@media (max-width: 1100px) {
    .dashboard-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dashboard-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 991px) {
    .admin-shell {
        display: block;
    }

    .admin-brand-wrap {
        width: 100%;
        max-width: 260px;
    }

    .admin-menu-toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    .admin-sidebar {
        position: fixed;
        left: 0;
        top: 72px;
        bottom: 0;
        display: none;
        width: 260px;
        height: auto;
        box-shadow: 16px 0 40px rgba(2, 10, 24, .16);
    }

    .admin-main {
        width: 100%;
        margin-left: 0;
        padding: 22px 18px 40px;
    }

    .login-shell {
        grid-template-columns: 1fr;
        max-width: 640px;
        min-height: auto;
    }

    .login-visual-panel {
        min-height: 300px;
        padding: 32px;
    }

    .login-visual-copy {
        margin: 40px 0 10px;
    }

    .login-visual-copy h1 {
        max-width: 580px;
        font-size: 2.1rem;
    }

    .login-feature-grid {
        display: none;
    }

    .login-form-panel {
        padding: 38px 34px 42px;
    }
}

@media (max-width: 640px) {
    .admin-topbar {
        height: 64px;
    }

    .admin-brand-wrap {
        width: auto;
        min-width: 160px;
        height: 64px;
        padding: 0 12px;
        background: var(--admin-sidebar);
    }

    .admin-brand-copy small {
        display: none;
    }

    .admin-session {
        gap: 8px;
        padding-right: 10px;
    }

    .admin-session-copy {
        display: none;
    }

    .admin-session-avatar {
        width: 38px;
        height: 38px;
    }

    .admin-logout {
        width: 36px;
        height: 36px;
    }

    .admin-sidebar {
        top: 64px;
    }

    .admin-main {
        padding: 16px 12px 34px;
    }

    .dashboard-welcome {
        align-items: flex-start;
        flex-direction: column;
        padding: 22px;
        border-radius: 18px;
    }

    .dashboard-welcome-user {
        align-items: flex-start;
    }

    .dashboard-avatar {
        width: 58px;
        height: 58px;
        flex-basis: 58px;
        border-radius: 16px;
    }

    .dashboard-welcome p {
        font-size: .78rem;
    }

    .dashboard-stats {
        grid-template-columns: 1fr;
        gap: 11px;
    }

    .dashboard-stat {
        min-height: 96px;
        padding: 16px;
    }

    .dashboard-card {
        padding: 16px;
    }

    .dashboard-activity-item {
        grid-template-columns: 36px minmax(0, 1fr);
    }

    .dashboard-activity-item time {
        display: none;
    }

    .dashboard-quick-grid {
        grid-template-columns: 1fr 1fr;
    }

    .main-block-body,
    .main-block .card-body {
        padding: 14px;
    }

    .table-responsive,
    .main-block-body {
        overflow-x: auto;
    }

    .login-shell {
        width: calc(100% - 24px);
        margin: 18px auto;
        border-radius: 20px;
    }

    .login-visual-panel {
        display: none;
    }

    .login-form-panel {
        min-height: calc(100vh - 36px);
        padding: 28px 22px;
    }

    .login-mobile-brand {
        width: 44px;
        height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        margin-bottom: 20px;
        border-radius: 13px;
        color: #fff;
        background: linear-gradient(135deg, #2563eb, #0ea5e9);
    }
}

.records-model-switcher {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.records-model-link {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 7px 11px;
    border: 1px solid #dfe6f0;
    border-radius: 9px;
    color: #5e6c80;
    background: #fff;
    font-size: .7rem;
    font-weight: 700;
    text-decoration: none;
}

.records-model-link:hover,
.records-model-link.active {
    color: #1d4ed8;
    border-color: #bcd1ff;
    background: #eef4ff;
    text-decoration: none;
}

.records-count {
    margin: 14px 0 10px;
}

.login-recaptcha {
    margin: 4px 0 16px;
    overflow-x: auto;
}

/* ========================================================================== */
/* Sistema Escolar - accesos por rol y portal inicial                         */
/* ========================================================================== */
.school-login-visual {
    background: linear-gradient(145deg, #0b274b 0%, #164b85 52%, #0b82c5 100%);
}
.login-brand-lockup,
.login-brand-lockup:hover,
.login-brand-lockup:focus {
    color: #fff;
    text-decoration: none;
}
.login-back-home {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-bottom: 18px;
    color: #758399;
    font-size: .69rem;
    font-weight: 700;
    text-decoration: none;
}
.login-back-home:hover { color: var(--admin-primary); text-decoration: none; }
.login-access-switch {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 7px;
    margin: 0 0 22px;
}
.login-access-switch a {
    min-height: 68px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 5px;
    border: 1px solid #e0e7f0;
    border-radius: 11px;
    color: #718096;
    background: #fbfcfe;
    font-size: .61rem;
    font-weight: 700;
    text-decoration: none;
}
.login-access-switch a i { font-size: .9rem; }
.login-access-switch a:hover,
.login-access-switch a.active {
    color: #1d4ed8;
    border-color: #b9d0ff;
    background: #f0f5ff;
    text-decoration: none;
}
.portal-role-wrap { max-width: 1500px; margin: 0 auto; }
.portal-role-hero {
    min-height: 155px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    padding: 28px 30px;
    border-radius: 22px;
    color: #fff;
    background: linear-gradient(125deg, #174bb7 0%, #2563eb 52%, #0ea5e9 100%);
    box-shadow: 0 18px 40px rgba(37, 99, 235, .18);
}
.portal-role-heading { display: flex; align-items: center; gap: 17px; }
.portal-role-icon { width: 64px; height: 64px; flex: 0 0 64px; display: inline-flex; align-items: center; justify-content: center; border-radius: 18px; color: #fff; background: rgba(255,255,255,.15); font-size: 1.35rem; }
.portal-role-heading h1 { margin: 0 0 6px; font-size: 1.75rem; font-weight: 800; letter-spacing: -.035em; }
.portal-role-heading p { margin: 0; color: rgba(255,255,255,.78); font-size: .82rem; }
.portal-demo-badge { display: inline-flex; align-items: center; gap: 7px; padding: 9px 11px; border: 1px solid rgba(255,255,255,.2); border-radius: 10px; color: #fff; background: rgba(255,255,255,.1); font-size: .67rem; font-weight: 700; white-space: nowrap; }
.portal-role-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 20px 0; }
.portal-module-card { position: relative; min-height: 175px; padding: 20px; border: 1px solid var(--admin-border); border-radius: 16px; background: #fff; box-shadow: var(--admin-shadow); }
.portal-module-card > span { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; border-radius: 12px; color: var(--admin-primary); background: var(--admin-primary-soft); }
.portal-module-card h3 { margin: 15px 0 6px; font-size: .86rem; font-weight: 800; }.portal-module-card p { margin: 0; color: #7b889a; font-size: .69rem; line-height: 1.55; }.portal-module-card > small { position: absolute; right: 13px; top: 14px; color: #9aa6b6; font-size: .56rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.portal-role-note { display: flex; align-items: flex-start; gap: 12px; padding: 16px 18px; border: 1px solid #d7e5ff; border-radius: 13px; color: #405474; background: #f1f6ff; }.portal-role-note > i { margin-top: 2px; color: var(--admin-primary); }.portal-role-note > div { display: flex; flex-direction: column; }.portal-role-note strong { font-size: .75rem; }.portal-role-note span { margin-top: 3px; color: #718099; font-size: .67rem; line-height: 1.5; }
@media (max-width: 1200px) { .portal-role-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .login-access-switch { gap: 5px; }.login-access-switch a { min-height: 60px; font-size: .55rem; }.portal-role-hero { align-items: flex-start; flex-direction: column; padding: 22px; border-radius: 18px; }.portal-role-heading { align-items: flex-start; }.portal-role-icon { width: 52px; height: 52px; flex-basis: 52px; border-radius: 14px; }.portal-role-heading h1 { font-size: 1.35rem; }.portal-role-grid { grid-template-columns: 1fr; gap: 11px; }.portal-module-card { min-height: 145px; } }

/* ========================================================================== */
/* Sistema Escolar - Fase 2: alumnos, tutores y expediente                    */
/* ========================================================================== */
.school-admin-module { max-width: 1500px; margin: 0 auto; }
.school-admin-page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 20px; }
.school-admin-page-head h1 { margin: 3px 0 4px; font-size: 1.65rem; font-weight: 800; letter-spacing: -.035em; }
.school-admin-page-head p { margin: 0; color: var(--admin-muted); font-size: .78rem; }
.school-admin-eyebrow { color: var(--admin-primary); font-size: .66rem; font-weight: 800; text-transform: uppercase; letter-spacing: .09em; }
.school-admin-head-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.school-admin-filter-card, .school-admin-card { margin-bottom: 18px; padding: 20px; border: 1px solid var(--admin-border); border-radius: 17px; background: #fff; box-shadow: var(--admin-shadow); }
.school-admin-filter-grid { display: grid; grid-template-columns: minmax(240px,1.8fr) minmax(150px,.7fr) minmax(200px,1fr) auto; gap: 12px; align-items: end; }
.school-admin-filter-grid.tutor-filter { grid-template-columns: minmax(260px,1fr) auto; }
.school-admin-filter-grid .form-group { margin: 0; }
.school-admin-filter-actions { display: flex; align-items: center; gap: 6px; }
.school-admin-card-head { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin: -2px 0 14px; }
.school-admin-card-head strong { font-size: 1rem; }.school-admin-card-head span, .school-admin-card-head small { color: #8190a5; font-size: .69rem; }
.school-admin-table { min-width: 900px; }
.school-admin-person { display: flex; align-items: center; gap: 10px; }
.school-admin-person > span { width: 34px; height: 34px; flex: 0 0 34px; display: flex; align-items: center; justify-content: center; border-radius: 10px; color: #2563eb; background: #eaf1ff; font-size: .73rem; font-weight: 800; }
.school-admin-person > div { display: flex; flex-direction: column; }.school-admin-person strong { color: #344155; font-size: .75rem; }.school-admin-person small { color: #8a97aa; font-size: .64rem; }
.school-table-sub { display: block; margin-top: 3px; color: #8b98aa; font-size: .63rem; }
.school-status { display: inline-flex; align-items: center; min-height: 25px; padding: 4px 8px; border-radius: 999px; font-size: .62rem; font-weight: 800; }
.school-status-warning { color: #a16207; background: #fef3c7; }.school-status-info { color: #1d4ed8; background: #dbeafe; }.school-status-success { color: #047857; background: #d1fae5; }.school-status-danger { color: #b91c1c; background: #fee2e2; }.school-status-secondary { color: #64748b; background: #edf2f7; }
.school-doc-ok, .school-doc-pending { font-size: .67rem; font-weight: 700; }.school-doc-ok { color: #059669; }.school-doc-pending { color: #d97706; }
.school-admin-empty { min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; color: #8a97aa; }.school-admin-empty i { font-size: 1.7rem; color: #c1cad6; }.school-admin-empty strong { color: #526176; font-size: .78rem; }.school-admin-empty.compact { min-height: 100px; }
.school-admin-pagination { display: flex; justify-content: center; gap: 6px; margin-top: 16px; }.school-admin-pagination a { width: 34px; height: 34px; display: flex; align-items:center; justify-content:center; border: 1px solid #e1e7ef; border-radius: 9px; color: #64748b; background:#fff; text-decoration:none; font-size:.7rem; font-weight:700; }.school-admin-pagination a.active { color:#fff; border-color:var(--admin-primary); background:var(--admin-primary); }
.school-expediente-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:18px; }.school-expediente-summary > div { padding:16px; border:1px solid var(--admin-border); border-radius:14px; background:#fff; box-shadow:var(--admin-shadow); }.school-expediente-summary small, .school-expediente-summary strong { display:block; }.school-expediente-summary small { color:#8693a6; font-size:.64rem; text-transform:uppercase; letter-spacing:.05em; }.school-expediente-summary strong { margin-top:4px; color:#344155; font-size:.82rem; }
.school-expediente-grid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr); gap:18px; }
.school-admin-card-title { display:flex; align-items:center; gap:11px; margin-bottom:17px; padding-bottom:14px; border-bottom:1px solid #edf1f6; }.school-admin-card-title > span { width:40px; height:40px; display:flex; align-items:center; justify-content:center; border-radius:11px; color:var(--admin-primary); background:#eaf1ff; }.school-admin-card-title small { display:block; color:#8a97aa; font-size:.61rem; text-transform:uppercase; letter-spacing:.06em; }.school-admin-card-title h2 { margin:2px 0 0; font-size:.94rem; font-weight:800; }
.school-detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 20px; }.school-detail-grid > div { min-width:0; }.school-detail-grid small, .school-detail-grid strong { display:block; }.school-detail-grid small { color:#8a97aa; font-size:.63rem; }.school-detail-grid strong { margin-top:3px; color:#3d4a5e; font-size:.73rem; word-break:break-word; }.school-detail-span { grid-column:span 2; }
.school-tutor-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 0; border-top:1px solid #edf1f6; }.school-tutor-row:first-of-type { border-top:0; }.school-tutor-row > div { display:flex; flex-direction:column; }.school-tutor-row strong { color:#39465a; font-size:.73rem; }.school-tutor-row small { margin-top:3px; color:#8a97aa; font-size:.63rem; }.school-tutor-row a { color:var(--admin-primary); }
.school-documents-card { margin-top:0; }.school-document-list { display:flex; flex-direction:column; }.school-document-row { display:grid; grid-template-columns:38px minmax(220px,1fr) 110px 50px; gap:12px; align-items:center; padding:13px 0; border-top:1px solid #edf1f6; }.school-document-row:first-child { border-top:0; }.school-document-type { width:36px; height:36px; display:flex; align-items:center; justify-content:center; border-radius:10px; color:#2563eb; background:#edf4ff; }.school-document-name { min-width:0; display:flex; flex-direction:column; }.school-document-name strong { color:#354258; font-size:.72rem; }.school-document-name small { margin-top:3px; overflow:hidden; color:#8a97aa; font-size:.61rem; white-space:nowrap; text-overflow:ellipsis; }.school-document-actions { text-align:right; }.school-document-review { grid-column:2 / -1; display:grid; grid-template-columns:150px minmax(220px,1fr) auto; gap:8px; padding:8px 0 3px; }
.school-upload-new { margin-top:18px; padding-top:17px; border-top:1px solid #edf1f6; }.school-upload-new h3 { margin:0 0 10px; font-size:.78rem; font-weight:800; }.school-upload-inline { display:grid; grid-template-columns:minmax(180px,.8fr) minmax(260px,1.4fr) auto; gap:9px; }
.school-review-form { display:grid; grid-template-columns:180px minmax(250px,1fr) auto; gap:10px; align-items:end; }.school-review-form .form-group { margin:0; }.school-review-note { margin:13px 0 0; color:#7b889b; font-size:.66rem; }.school-review-note i { color:var(--admin-primary); margin-right:5px; }
.school-admin-form-section { margin-bottom:24px; }.school-admin-form-section h2 { margin:0 0 13px; padding-bottom:10px; border-bottom:1px solid #edf1f6; font-size:.86rem; font-weight:800; }.school-admin-form-grid { display:grid; gap:13px; }.school-admin-form-grid.grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }.school-admin-form-grid.grid-4 { grid-template-columns:repeat(4,minmax(0,1fr)); }.grid-span-2 { grid-column:span 2; }.grid-span-3 { grid-column:span 3; }.grid-span-4 { grid-column:span 4; }
.portal-module-card.portal-module-enabled { color:inherit; text-decoration:none; border-color:#cfe0ff; background:#fbfdff; transition:transform .18s ease, box-shadow .18s ease; }.portal-module-card.portal-module-enabled:hover { color:inherit; text-decoration:none; transform:translateY(-2px); box-shadow:0 14px 30px rgba(15,34,58,.10); }.portal-module-card.portal-module-enabled small { color:#059669; }
@media (max-width:1100px) { .school-admin-filter-grid { grid-template-columns:1fr 1fr; }.school-admin-filter-actions { grid-column:span 2; }.school-expediente-grid { grid-template-columns:1fr; }.school-expediente-summary { grid-template-columns:repeat(2,1fr); } }
@media (max-width:760px) { .school-admin-page-head { align-items:flex-start; flex-direction:column; }.school-admin-filter-grid,.school-admin-filter-grid.tutor-filter { grid-template-columns:1fr; }.school-admin-filter-actions { grid-column:auto; }.school-expediente-summary { grid-template-columns:1fr 1fr; }.school-detail-grid { grid-template-columns:1fr; }.school-detail-span { grid-column:auto; }.school-document-row { grid-template-columns:36px minmax(0,1fr) auto; }.school-document-state { grid-column:2; }.school-document-actions { grid-column:3; grid-row:1/3; }.school-document-review { grid-column:1/-1; grid-template-columns:1fr; }.school-upload-inline,.school-review-form { grid-template-columns:1fr; }.school-admin-form-grid.grid-3,.school-admin-form-grid.grid-4 { grid-template-columns:1fr; }.grid-span-2,.grid-span-3,.grid-span-4 { grid-column:auto; } }
