/* Каркас страницы */
.t-body{ min-height:100vh; min-height:100dvh; height:auto; display:flex; flex-direction:column; }
.t-body>main{ flex:1 0 auto; min-width:0; }
html {
  min-height: 100%;
  margin: 0;
}
.container{ max-width:1100px; margin-inline:auto;  }
/* Кнопки (в HTML используется класс .button) */
.button{
  display:inline-flex; align-items:center; justify-content:center;
  padding:10px 14px; border-radius:9999px; border:1px solid transparent;
  font:600 14px/1 Inter, sans-serif; background:#fff;
}
.hero-primary-cta, .callout-register{ background:var(--brand); color:#fff; }
.hero-primary-cta:hover, .callout-register:hover{ filter:brightness(.95); }
.hero-secondary-cta, .callout-sign-in{ background:#fff; border:1px solid var(--border); color:inherit; }
.hero-secondary-cta:hover{ background:#f9fafb; }

/* Шапка / навигация (классы из _Header.cshtml) */
.site-header{ position:sticky; top:0; background:rgba(255,255,255,.9); backdrop-filter:blur(8px); border-bottom:1px solid var(--border); z-index:100; }
.primary-navigation{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 16px; max-width:1100px; margin-inline:auto; }
.nav-left{ display:flex; align-items:center; gap:12px; min-width:0; }
.brand-block{ display:flex; align-items:center; gap:12px; }
.brand-logo{ width:40px; height:40px; border-radius:8px; border:1px solid var(--border); object-fit:contain; }
.brand-text{ display:flex; flex-direction:column; min-width:0; }
.brand-title{ font:700 18px/1.25 Inter, sans-serif; letter-spacing:-.02em; white-space:nowrap; }
.brand-subtitle{ color:var(--muted); font-size:14px; }
.navigation-list{ display:flex; gap:16px; }
.navigation-list a:hover{ text-decoration:underline; }
.nav-actions{ display:flex; gap:10px; justify-content: center; align-items: center;}

/* Мобильный дровер (классы совпадают с HTML) */
.mobile-menu-button, .drawer-close-button{
  display:none; width:40px; height:40px; align-items:center; justify-content:center;
  border:1px solid var(--border); border-radius:10px; background:#fff;
}
.icon-burger,.icon-close{ width:24px; height:24px; }

.mobile-overlay{ position:fixed; inset:0; background:rgba(15,23,42,.5); opacity:0; pointer-events:none; transition:opacity .2s; z-index:40; }
.mobile-overlay.is-open{ opacity:1; pointer-events:auto; }

.mobile-drawer{
  position:fixed; top:0; left:0; height:100dvh; width:min(80vw,320px); background:#fff;
  border-right:1px solid var(--border); transform:translateX(-100%); transition:transform .22s; z-index:50; display:flex; flex-direction:column;
}
.mobile-drawer.is-open{ transform:translateX(0); }

.drawer-header{ display:flex; align-items:center; justify-content:space-between; padding:12px 16px; border-bottom:1px solid var(--border); }
.mobile-panel-content{ display:flex; flex-direction:column; }
.mobile-panel-content a{ padding:14px 16px; border-bottom:1px solid var(--border); }
.mobile-panel-content a:hover{ background:var(--brand-ghost); }

/* Общие секции и футер */
.section{ padding-block:40px; }
.section--band{ background:#fff; border-block:1px solid var(--border); }
.section .container{ padding-block:24px; }

/* FULL-BLEED фон, БЕЗ рамки на самом футере */
.site-footer{
  background:#fff;
  /* чтобы прилипал к низу, если страница низкая */
  margin-top:auto;
}

/* Рамка и контент строго внутри контейнера */
.footer-container{
  max-width:1100px;
  margin-inline:auto;
  padding:20px 16px;
}

/* Верхняя строка: навигация слева, контакты справа */
.footer-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
}

/* Ссылки футера в ряд */
.footer-nav{
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
}
.footer-nav a{
  padding:6px 8px;
  border-radius:8px;
  transition:background-color .15s ease, color .15s ease;
}
.footer-nav a:hover{
  background:#f1f5f9;
}

/* Контакты */
.footer-contacts{
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--muted);
}
.footer-contacts a{ color:inherit; }
.footer-contacts .sep{ opacity:.6; }

/* Нижняя строка: тонкая разделительная и копирайт */
.footer-meta{
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid var(--border);
  color:var(--muted);
  font-size:14px;
}

/* Адаптив: на узких — колоночкой, выравнивание влево */
@media (max-width: 768px){
  .footer-row{
    flex-direction:column;
    align-items:flex-start;
    gap:12px;
  }
}

/* Адаптив */
@media (max-width: 992px){
  .mobile-menu-button,.drawer-close-button{ display:inline-flex; }
  .navigation-list{ display:none; }
  .footer-top{ flex-direction:column; }
}

.register-button{
  background:var(--brand);
  color:#fff;
  border-radius:9999px;
  padding:10px 14px;
  font:600 14px/1 Inter, sans-serif;
  border:1px solid transparent;
}
.register-button:hover{ filter:brightness(.95); }

.sign-in-button{
  background:#fff;
  color:inherit;
  border:1px solid var(--border);
  border-radius:9999px;
  padding:10px 14px;
  font:600 14px/1 Inter, sans-serif;
}
.sign-in-button:hover{ background:#f9fafb; }

.callout-container{
    max-width:1100px; margin-inline:auto; padding:0px 16px;
    display:flex; align-items:center; justify-content:space-between;
}

/* Тёмный вариант callout */
.callout-section--brand{
  background: var(--brand-800);
  color: var(--on-brand);
}
.callout-section--brand {
  max-width:1100px; margin-inline:auto; padding:24px 16px;
}
.callout-section--brand .callout-title{ color:var(--on-brand); }
.callout-section--brand .callout-subtitle{ color:rgba(255,255,255,.9); }

/* Кнопки-инверсия внутри тёмного блока */
.callout-section--brand .callout-register{
  background:#fff; color:var(--brand-800);
  border:1px solid transparent; border-radius:9999px; padding:10px 16px; font-weight:600;
}
.callout-section--brand .callout-register:hover{ background:#f1f5f9; }

.callout-section--brand .callout-sign-in{
  background:transparent; color:#fff;
  border:1px solid #fff; border-radius:9999px; padding:10px 16px; font-weight:600;
}
.callout-section--brand .callout-sign-in:hover{
  background:rgba(255,255,255,.1);
}

.primary-navigation{ padding:14px 16px; }
.navigation-list a{ padding:6px 8px; border-radius:8px; }
.navigation-list a:hover{ background:rgba(255,255,255,.6); text-decoration:none; }

.site-footer {
  flex-shrink: 0;      /* футер не сжимается */
}

.alert {
  border-radius: 10px;
  padding: 12px 16px;
  margin-bottom: 20px;
  font-size: 0.95rem;
  border: 1px solid transparent;
}

/* Ошибка (красный) */
.alert--error {
  background-color: #fee2e2;
  color: #b91c1c;
  border-color: #fecaca;
}

/* Успех (зелёный) */
.alert--success {
  background-color: #dcfce7;
  color: #166534;
  border-color: #bbf7d0;
}

/* Инфо (синий) */
.alert--info {
  background-color: #dbeafe;
  color: #1e3a8a;
  border-color: #bfdbfe;
}



.alert-success{
  background-color: #d1fae5;
  color: #065f46;
  border: 1px solid #a7f3d0;
    font-size: 0.95rem;
      border-radius: 10px;
  padding: 12px 16px;
  margin-bottom: 20px;
}

.actions-center {
  display: flex;
  justify-content: center;   /* центр по горизонтали */
}

.resend-form {
  display: inline-block;     /* чтобы форма не растягивалась */
  margin: 0;                 /* на всякий случай */
}

/* если базовый .button где-то делает width:100% — переопредели для этой кнопки */
.resend-form .button {
  width: auto;
  display: inline-flex;      /* красиво центрирует текст внутри */
  align-items: center;
  justify-content: center;
}

/* Универсальные правки для хедера */
.site-header {
  position: sticky;
  top: 0;
  z-index: 1030;
}

.navbar-brand div {
  line-height: 1.1;
}

.navbar-nav .nav-link {
  font-weight: 500;
  transition: color 0.2s ease;
}

.navbar-nav .nav-link:hover,
.navbar-nav .nav-link:focus {
  color: #0d6efd;
}

/* Для более аккуратного вида при сжатии */
@media (max-width: 576px) {
  .navbar-brand img {
    width: 32px;
    height: 32px;
  }
  .navbar-brand small {
    font-size: 0.7rem;
  }
}

.brand-block {
  display: flex;
  align-items: center;
}

.brand-logo {
  flex-shrink: 0;
  object-fit: contain;
  border-radius: 4px;
  vertical-align: middle;
}

.brand-text {
  line-height: 1.1;
  margin-top: 1px;
}

@media (max-width: 480px) {
  .brand-logo {
    width: 32px;
    height: 32px;
  }
  .brand-title {
    font-size: 0.95rem;
  }
  .brand-subtitle {
    font-size: 0.7rem;
  }
}


.site-header .auth-block {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;           
}

.site-header .auth-block .user-caption {
  max-width: min(52vw, 420px);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.site-header .auth-block .auth-logout-form {
  margin: 0;
}

/* На планшетах/мобилках — складываем колонкой */
@media (max-width: 768px) {
  .site-header .auth-block {
    flex-direction: column;      /* элементы друг под другом */
    align-items: stretch;        /* тянем на ширину контейнера */
    gap: .4rem;
  }

  /* Имя/роль отдельной строкой, без обрезания */
  .site-header .auth-block .user-caption {
    max-width: 100%;
    white-space: normal;
  }

  /* Кнопки на всю ширину и аккуратно одна под другой */
  .site-header .auth-block .button,
  .site-header .auth-block a.button,
  .site-header .auth-block button.button {
    width: 100%;
    text-align: center;
  }

  /* Форма выхода пусть тоже тянется */
  .site-header .auth-block .auth-logout-form {
    width: 100%;
  }
}

/* Чуть уменьшим подпись-слоган у лого на очень узких экранах */
@media (max-width: 480px) {
  .brand-subtitle { font-size: 0.7rem; }
}

.muted-box {
  background: #f8f9fa;
  border-radius: 8px;
  padding: 8px 12px;
}

.teams-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media(max-width:768px){.teams-grid{grid-template-columns:1fr}}
.team-card{border:1px solid #e5e7eb;border-radius:12px;padding:16px;background:#fff}
.team-card h5{margin:0 0 8px; font-size:1.05rem}
.team-card .muted{color:#6b7280; font-size:.9rem}
.team-card .actions{margin-top:12px; display:flex; gap:8px; flex-wrap:wrap}


.ol-list {
    display: grid;
    gap: 1.25rem;
}
@media (min-width: 768px) {
    .ol-list { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
.ol-card {
    background: #fff;
    border: 1px solid rgba(0,0,0,.05);
    border-radius: 1rem;
    padding: 1.25rem 1.25rem 1rem;
    box-shadow: 0 6px 24px rgba(15,23,42,.03);
    display: flex;
    flex-direction: column;
    gap: .75rem;
}
.ol-card__title {
    font-weight: 600;
    font-size: 1.05rem;
    margin-bottom: .25rem;
}
.ol-meta {
    display: flex;
    gap: .75rem;
    flex-wrap: wrap;
    font-size: .75rem;
    color: #475569;
}
.ol-badge {
    background: #eff6ff;
    color: #1d4ed8;
    border-radius: 999px;
    padding: .15rem .65rem;
    font-size: .7rem;
    font-weight: 500;
}
.ol-desc {
    white-space: pre-line;
}

#chart-classes,
#chart-track-popularity,
#chart-subject-avg,
#chart-final-avg,
#chart-histogram,
#chart-team-avg {
  min-height: 320px;
}

  .analytics-section-title {
    font-weight: 700;
    margin-bottom: 1rem;
  }

  .analytics-kpi-card .card-body {
    padding: 1rem 1rem 0.9rem;
  }

  .analytics-kpi-label {
    font-size: 0.9rem;
    color: #6c757d;
  }

  .analytics-kpi-value {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
    margin-top: 0.4rem;
  }

  .analytics-card-title {
    font-weight: 600;
    margin-bottom: 1rem;
  }

  .analytics-chart-wrap {
    position: relative;
    width: 100%;
    height: 320px;
  }

  .analytics-chart-wrap--wide {
    height: 360px;
  }

  .analytics-chart-wrap canvas {
    width: 100% !important;
    height: 100% !important;
    display: block;
  }

  .analytics-table-wrap {
    max-height: 420px;
    overflow: auto;
  }

  .analytics-table thead th {
    position: sticky;
    top: 0;
    background: #fff;
    z-index: 1;
  }

  .analytics-empty {
    color: #6c757d;
    font-style: italic;
  }

  @media print {
  #analytics-reload,
  #analytics-export-excel,
  #analytics-export-pdf,
  #an-alert-err {
    display: none !important;
  }

  body {
    background: #fff !important;
  }

  .card {
    box-shadow: none !important;
    border: 1px solid #ddd !important;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  .analytics-chart-wrap {
    height: 260px !important;
  }

  .container {
    max-width: 100% !important;
    width: 100% !important;
  }

  section {
    break-inside: avoid;
    page-break-inside: avoid;
    margin-bottom: 24px !important;
  }

  canvas {
    max-width: 100% !important;
  }
}
/* Unified dark navigation for Razor pages */
@font-face{font-family:Onest;src:url('/design/assets/68e5e01d6265bd68.woff2') format('woff2');font-weight:400 700;font-display:swap;unicode-range:U+0400-052F,U+2116}
@font-face{font-family:Onest;src:url('/design/assets/052df74533250c2e.woff2') format('woff2');font-weight:400 700;font-display:swap}
@font-face{font-family:Geologica;src:url('/design/assets/a7dc739efa0c2d40.woff2') format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0400-052F,U+2116}
@font-face{font-family:Geologica;src:url('/design/assets/b14f1edee95a57f8.woff2') format('woff2');font-weight:300 700;font-display:swap}
.site-header{position:sticky;top:0;z-index:1030;background:#07122b;border-bottom:1px solid #16294f;box-shadow:none!important;backdrop-filter:none;font-family:Onest,Arial,sans-serif}
.site-header .portal-navbar{min-height:76px;padding:0;background:#07122b}
.site-header .portal-navbar__inner{max-width:1440px;padding:0 48px;min-height:76px;display:flex;gap:28px}
.portal-brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;white-space:nowrap}
.portal-brand:hover{color:#fff}
.portal-brand__text{display:flex;flex-direction:column;gap:2px;line-height:1.1}
.portal-brand__text strong{font:700 20px/1.1 Geologica,Onest,sans-serif;letter-spacing:-.02em}
.portal-brand__text small{font:500 10px/1.3 Consolas,monospace;letter-spacing:.05em;color:#8e9cc0}
.site-header .portal-navbar__content{justify-content:space-between;gap:16px}
.site-header .portal-navbar__links{gap:2px;margin:auto}
.site-header .portal-navbar__links .nav-link,.site-header .portal-navbar__account{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;border:0;border-radius:8px;color:#aeb9d4;background:transparent;text-decoration:none;font:500 14px/1 Onest,Arial,sans-serif;white-space:nowrap}
.site-header .portal-navbar__links .nav-link:hover,.site-header .portal-navbar__links .nav-link:focus,.site-header .portal-navbar__account:hover,.site-header .portal-navbar__account:focus{color:#fff;background:#12234a}
.site-header .portal-navbar__actions{display:flex;align-items:center;gap:12px;flex-wrap:nowrap}
.site-header .portal-navbar__year{font:500 11px/1 Consolas,monospace;letter-spacing:.04em;color:#8e9cc0;white-space:nowrap}
.site-header .portal-navbar__user{font-size:13px;color:#fff;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.site-header .portal-navbar__cta{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border-radius:8px;background:#c8f53c;color:#07122b;text-decoration:none;font:600 14px/1 Onest,Arial,sans-serif;white-space:nowrap}
.site-header .portal-navbar__cta:hover{background:#daff63;color:#07122b}
.site-header .auth-logout-form{margin:0}
.site-header .portal-navbar__toggle{border-color:#33466e;padding:6px 9px}
.site-header .portal-navbar__toggle .navbar-toggler-icon{filter:invert(1)}
.site-footer{background:#07122b;color:#b4c0dc;border-top:1px solid #22355f;font-family:Onest,Arial,sans-serif}
.site-footer .footer-container{max-width:1440px;padding:36px 48px}
.site-footer a{color:#b4c0dc;text-decoration:none}
.site-footer a:hover{color:#fff;background:transparent}
.site-footer .footer-contacts{color:#b4c0dc}
.site-footer .footer-meta{border-top-color:#22355f;color:#6f7fa6}
@media(max-width:1200px){.site-header .portal-navbar__inner{padding:0 24px;gap:16px}.site-header .portal-navbar__links .nav-link{padding:0 7px;font-size:13px}.site-header .portal-navbar__actions{gap:6px}}
@media(max-width:1199px){.site-header .portal-navbar,.site-header .portal-navbar__inner{min-height:64px}.site-header .portal-navbar__inner{padding:0 20px;flex-wrap:wrap}.site-header .portal-navbar__toggle{margin-left:auto}.site-header .portal-navbar__content{flex-basis:100%;padding:12px 0 20px;border-top:1px solid #16294f}.site-header .portal-navbar__links{margin:0;gap:2px}.site-header .portal-navbar__links .nav-link{font-size:15px;padding:10px 12px}.site-header .portal-navbar__actions{padding:12px 0 0;flex-direction:row;align-items:center;flex-wrap:wrap}.site-header .portal-navbar__year{display:none}.site-header .portal-navbar__account,.site-header .portal-navbar__cta{min-height:42px}.site-header .auth-block .auth-logout-form{width:auto}.site-header .auth-block .button{width:auto}.site-footer .footer-container{padding:28px 20px}}

.site-header .portal-brand{flex:none}
.site-header .site-logo{display:block;width:112px;height:56px;object-fit:contain;border-radius:10px}
@media(max-width:1199px){.site-header .site-logo{width:96px;height:48px}}
.site-header .portal-navbar__content{min-width:0}
.site-header .portal-navbar__toggle{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px}
.site-header .portal-navbar__toggle .navbar-toggler-icon{width:22px;height:22px;filter:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 7h16M4 12h16M4 17h10' fill='none' stroke='%23e6ecf8' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E")}
@media(min-width:1200px){.site-header .portal-navbar__toggle{display:none}}
@media(min-width:1200px) and (max-width:1359px){.site-header .portal-navbar__inner{padding-inline:24px;gap:16px}.site-header .portal-navbar__links .nav-link{font-size:13px;padding-inline:7px}.site-header .portal-navbar__year{display:none}.site-header .portal-navbar__actions{gap:8px}}
@media(max-width:1199px){.site-header .portal-navbar__content.show{max-height:calc(100dvh - 64px);overflow-y:auto}.site-header .portal-navbar__links{align-items:stretch}.site-header .portal-navbar__links .nav-link{width:100%}}
