
/* ==== Renovo UI (rev2) ==== */
:root{
  --rn-bg:#0d1014; --rn-surface:#14181d; --rn-soft:rgba(255,255,255,.04);
  --rn-border:rgba(255,255,255,.08); --rn-text:#e6e8ea; --rn-muted:#9aa3ae;
  --rn-primary:#F58220; --rn-primary-2:#d96f14;
}
html,body{background:var(--rn-bg);color:var(--rn-text);}
.rn-body{background:radial-gradient(1200px 600px at 80% -20%,rgba(245,130,32,.08),transparent 60%) no-repeat,var(--rn-bg);}
.rn-nav{background:rgba(20,24,29,.8);backdrop-filter:blur(8px);}
.card.bg-soft{background:var(--rn-surface);border:1px solid var(--rn-border);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);border-radius:14px;}
.table thead th{color:#cbd2d9;font-weight:600;letter-spacing:.02em;border-bottom-color:var(--rn-border)!important;}
.table tbody td{color:var(--rn-text);border-top-color:var(--rn-border);}
code.small-link{user-select:all;font-size:.9rem;}
.btn.rn-btn-primary{background-color:var(--rn-primary)!important;border-color:var(--rn-primary)!important;color:#101215!important;}
.btn.rn-btn-primary:hover{background-color:var(--rn-primary-2)!important;border-color:var(--rn-primary-2)!important;color:#fff!important;}
.rn-chip{display:inline-block;padding:.25rem .5rem;border-radius:999px;background:var(--rn-soft);border:1px solid var(--rn-border);color:var(--rn-muted);}
.chat-log{background:#0f1114;border:1px solid var(--rn-border);border-radius:12px;color:#e1e6eb;}
.chat-msg{padding:.375rem .5rem;margin:.125rem 0;}
.chat-msg .role{opacity:.75;margin-right:.25rem;font-weight:600;}
.form-control,.form-select{background:#11161b;border:1px solid var(--rn-border);color:var(--rn-text);}
.form-control::placeholder{color:#7d8791;}

/* ==== Renovo UI (rev2) ==== */
:root{
  --rn-bg:#0d1014; --rn-surface:#14181d; --rn-soft:rgba(255,255,255,.04);
  --rn-border:rgba(255,255,255,.08); --rn-text:#e6e8ea; --rn-muted:#9aa3ae;
  --rn-primary:#F58220; --rn-primary-2:#d96f14;
}
html,body{background:var(--rn-bg);color:var(--rn-text);}
.rn-body{background:radial-gradient(1200px 600px at 80% -20%,rgba(245,130,32,.08),transparent 60%) no-repeat,var(--rn-bg);}
.rn-nav{background:rgba(20,24,29,.8);backdrop-filter:blur(8px);}
.card.bg-soft{background:var(--rn-surface);border:1px solid var(--rn-border);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);border-radius:14px;}
.table thead th{color:#cbd2d9;font-weight:600;letter-spacing:.02em;border-bottom-color:var(--rn-border)!important;}
.table tbody td{color:var(--rn-text);border-top-color:var(--rn-border);}
code.small-link{user-select:all;font-size:.9rem;}
.btn.rn-btn-primary{background-color:var(--rn-primary)!important;border-color:var(--rn-primary)!important;color:#101215!important;}
.btn.rn-btn-primary:hover{background-color:var(--rn-primary-2)!important;border-color:var(--rn-primary-2)!important;color:#fff!important;}
.rn-chip{display:inline-block;padding:.25rem .5rem;border-radius:999px;background:var(--rn-soft);border:1px solid var(--rn-border);color:var(--rn-muted);}
.chat-log{background:#0f1114;border:1px solid var(--rn-border);border-radius:12px;color:#e1e6eb;}
.chat-msg{padding:.375rem .5rem;margin:.125rem 0;}
.chat-msg .role{opacity:.75;margin-right:.25rem;font-weight:600;}
.form-control,.form-select{background:#11161b;border:1px solid var(--rn-border);color:var(--rn-text);}
.form-control::placeholder{color:#7d8791;}

/* === FORCE RENOVO THEME OVERRIDES === */
html,body{ background:#0d1014 !important; color:#e6e8ea !important; }
.rn-body{ background:radial-gradient(1200px 600px at 80% -20%,rgba(245,130,32,.08),transparent 60%) no-repeat,#0d1014 !important; }

.navbar,.rn-nav{ background:rgba(20,24,29,.90) !important; backdrop-filter:blur(8px) !important; }

.card.bg-soft{
  background:#14181d !important;
  border:1px solid rgba(255,255,255,.08) !important;
  border-radius:14px !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05) !important;
}

.table thead th{
  color:#cbd2d9 !important;
  border-bottom-color:rgba(255,255,255,.10) !important;
  letter-spacing:.02em !important;
}
.table tbody td{
  color:#e6e8ea !important;
  border-top-color:rgba(255,255,255,.08) !important;
}

.form-control,.form-select{
  background:#11161b !important;
  border:1px solid rgba(255,255,255,.14) !important;
  color:#e6e8ea !important;
}
.form-control::placeholder{ color:#7d8791 !important; }
/* === LOGO: убрать все внутренние/внешние отступы === */
.rn-nav.navbar{ padding:0 !important; border-bottom:0 !important; box-shadow:none !important; }
.rn-nav.navbar .container{ padding-left:0 !important; padding-right:0 !important; }
.navbar-brand{ display:block !important; padding:0 !important; margin:0 !important; line-height:0 !important; }
.navbar-brand img.rn-logo{
  display:block !important;
  margin:0 !important;
  padding:0 !important;
  width:120px !important; height:120px !important; /* крупное лого */
  object-fit:contain !important;
}

/* === BUTTON SHADOW: ровно под кнопкой, без «полосы» снизу === */
.btn.rn-btn-3d::after{ display:none !important; }   /* отключаем прежний псевдоэлемент */
.btn.rn-btn-3d{
  box-shadow: 0 0 24px rgba(245,130,32,.62) !important;  /* свечение по периметру */
}
.btn.rn-btn-3d:hover{
  box-shadow: 0 0 30px rgba(245,130,32,.72) !important;
}
/* RN HOTFIX: center login page only */
.rn-main:has(#id_username){
  min-height: calc(100vh - 72px - 56px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 !important;
  overflow: hidden;
}
/* RN FIX: убрать паддинги/отступы у лого */
.navbar-brand{
  padding:0 !important;
  margin:0 !important;
}
.navbar-brand img.rn-logo{
  display:block !important;
  margin:0 !important;
  padding:0 !important;
}
/* RN: убрать все паддинги у хедера и бренда */
.rn-nav.navbar{ padding:0 !important; }
.rn-nav.navbar .container{ padding-left:0 !important; padding-right:0 !important; }
.navbar-brand{ padding:0 !important; margin:0 !important; line-height:0 !important; }
.navbar-brand img.rn-logo{ display:block !important; margin:0 !important; padding:0 !important; height:28px !important; width:auto !important; }
/* RN: увеличить лого и добавить вертикальные паддинги в шапке */
.rn-nav.navbar{ padding-top:15px !important; padding-bottom:15px !important; }
.navbar-brand img.rn-logo{
  height:112px !important; /* было 28px → ×4 */
  width:auto !important;
}
/* RN: уменьшить лого (1.5x меньше чем было) */
.navbar-brand img.rn-logo{
  height:74px !important;
  width:auto !important;
}
/* RN: логин — сделать карточку уже (вертикальный прямоугольник) */
.rn-login-viewport .rn-login-card{
  max-width: 420px !important;   /* было ~560px */
  width: 100% !important;
}
/* RN FIX: уменьшить логотип в хедере ещё в 1.5 раза */
.navbar-brand img.rn-logo{
  height:49px !important;
  width:auto !important;
}
/* RN: фон — градиент ниже + анимация */
.rn-body{
  background:
    radial-gradient(1400px 720px at 75% 10%, rgba(245,130,32,.24), transparent 62%) no-repeat,
    radial-gradient(900px 580px at 12% 16%, rgba(217,111,20,.18), transparent 60%) no-repeat,
    #0d1014 !important;
  animation: rn-bg-move 12s ease-in-out infinite alternate;
}
@keyframes rn-bg-move{
  0%   { background-position: 75% 10%, 12% 16%; }
  100% { background-position: 68% 40%, 16% 32%; }
}
/* RN: ФОН — ниже + гарантированная анимация */
body.rn-body{
  background:
    radial-gradient(1600px 900px at 75% 15%, rgba(245,130,32,.28), transparent 65%) no-repeat,
    radial-gradient(1100px 700px at 12% 28%, rgba(217,111,20,.20), transparent 62%) no-repeat,
    #0d1014 !important;
  animation: rnBgDrift2 14s ease-in-out infinite alternate !important;
  background-attachment: fixed, fixed, fixed;
}
@keyframes rnBgDrift2{
  0%   { background-position: 75% 15%, 12% 28%, 0 0; }
  100% { background-position: 66% 55%, 16% 48%, 0 0; }
}
/* RN: фон — приподнят на ~35% */
body.rn-body{
  background:
    radial-gradient(1600px 900px at 75% -5%, rgba(245,130,32,.28), transparent 65%) no-repeat,
    radial-gradient(1100px 700px at 12% -5%, rgba(217,111,20,.20), transparent 62%) no-repeat,
    #0d1014 !important;
  animation: rnBgDrift3 14s ease-in-out infinite alternate !important;
}
@keyframes rnBgDrift3{
  0%   { background-position: 75% -5%, 12% -5%, 0 0; }
  100% { background-position: 66% 25%, 16% 15%, 0 0; }
}
/* RN: фон — приподнят ещё на 15% */
body.rn-body{
  background:
    radial-gradient(1600px 900px at 75% -20%, rgba(245,130,32,.28), transparent 65%) no-repeat,
    radial-gradient(1100px 700px at 12% -20%, rgba(217,111,20,.20), transparent 62%) no-repeat,
    #0d1014 !important;
  animation: rnBgDrift4 14s ease-in-out infinite alternate !important;
}
@keyframes rnBgDrift4{
  0%   { background-position: 75% -20%, 12% -20%, 0 0; }
  100% { background-position: 66% 10%, 16% 0%, 0 0; }
}
/* RN: force bg animation (reset attachment + new keyframes) */
body.rn-body{
  background:
    radial-gradient(1600px 900px at 75% -20%, rgba(245,130,32,.28), transparent 65%) no-repeat,
    radial-gradient(1100px 700px at 12% -20%, rgba(217,111,20,.20), transparent 62%) no-repeat,
    #0d1014 !important;
  background-attachment: scroll, scroll, scroll !important;
  animation: rnBgDrift5 14s ease-in-out infinite alternate !important;
  will-change: background-position;
}
@keyframes rnBgDrift5{
  0%   { background-position: 75% -20%, 12% -20%, 0 0; }
  100% { background-position: 68% 10%, 16% 0%, 0 0; }
}
/* RN: тень под хедером */
.rn-nav.navbar{
  box-shadow: 0 4px 12px rgba(0,0,0,.45) !important;
}
/* RN: тень под хедером — больше блюр */
.rn-nav.navbar{
  box-shadow: 0 6px 24px rgba(0,0,0,.55) !important;
}
/* RN: тень под хедером — ближе к хедеру */
.rn-nav.navbar{
  box-shadow: 0 3px 24px rgba(0,0,0,.55) !important;
}
/* RN: тень как у хедера — под карточкой логина и футером */
.rn-login-card{
  box-shadow: 0 3px 24px rgba(0,0,0,.55) !important;
}
.rn-footer{
  box-shadow: 0 -3px 24px rgba(0,0,0,.55) !important;
}
/* RN: тень под карточкой логина — принудительно */
.card.bg-soft.rn-login-card, .rn-login-card{
  position: relative;
  z-index: 1;
  box-shadow: 0 3px 24px rgba(0,0,0,.55) !important;
}
/* RN: анимация градиента фона */
body.rn-body{
  background:
    radial-gradient(1600px 900px at 75% -20%, rgba(245,130,32,.28), transparent 65%) no-repeat,
    radial-gradient(1100px 700px at 12% -20%, rgba(217,111,20,.20), transparent 62%) no-repeat,
    #0d1014 !important;
  animation: rnBgFlow 18s ease-in-out infinite alternate !important;
  will-change: background-position;
}
@keyframes rnBgFlow{
  0%   { background-position: 75% -20%, 12% -20%, 0 0; }
  50%  { background-position: 72% 0%, 14% -10%, 0 0; }
  100% { background-position: 68% 15%, 16% 5%, 0 0; }
}
/* RN: живой фон через псевдоэлемент (GPU-friendly) */
body.rn-body{ position: relative; overflow: hidden; }
body.rn-body::before{
  content: "";
  position: fixed;
  inset: -20% -20% auto -20%;
  height: 160vh;
  width: 160vw;
  z-index: -1;
  pointer-events: none;
  background:
    radial-gradient(38% 28% at 72% 0%, rgba(245,130,32,.26), transparent 62%) no-repeat,
    radial-gradient(30% 24% at 12% -6%, rgba(217,111,20,.20), transparent 68%) no-repeat;
  transform: translate3d(0,0,0);
  animation: rnBlob 16s ease-in-out infinite alternate;
  will-change: transform;
}
@keyframes rnBlob {
  0%   { transform: translate3d(0%, 0%, 0); }
  100% { transform: translate3d(-7%, 13%, 0); }
}
/* RN FIX: унифицировать тень кнопки "Войти" */
.btn.rn-btn-3d{
  box-shadow: 0 3px 24px rgba(0,0,0,.55) !important;
}
.btn.rn-btn-3d:hover{
  box-shadow: 0 3px 24px rgba(0,0,0,.65) !important;
}
/* RN: restore scroll globally (login keeps its own fixed layout) */
html,body{overflow:auto;height:auto;}
.rn-footer{position:static !important;}
/* RN: default page layout — без принудительных паддингов сверху, футер не фиксированный */
.rn-main{padding-top:0; padding-bottom:2rem;}
.rn-footer{position:static;}
html,body{height:auto; overflow-y:auto;}
/* RN layout normalize */
.rn-main{padding-top:0; padding-bottom:2rem;}
.rn-footer{position:static;}
html,body{height:auto; overflow-y:auto;}
/* ===== RN layout v2: sticky footer via flex ===== */
html, body { height: 100%; }
body.rn-body{
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
.rn-main{
  flex:1 0 auto;       /* тянем основной контент */
  padding-top:0;
  padding-bottom:2rem; /* воздух над футером */
}
.rn-footer{
  position:static;     /* точно не fixed */
  margin-top:auto;     /* на всякий случай прижмёт вниз */
}
