:root{
  --aries-navy:#0d2740;
  --aries-blue:#0d5c8c;
  --aries-cyan:#2aa6c8;
  --aries-sand:#f2ede3;
  --aries-cream:#fbf8f2;
  --aries-white:#ffffff;
  --aries-ink:#12202d;
  --aries-muted:#607285;
  --aries-border:#d6e0e7;
  --aries-line:#e7edf2;
  --aries-success:#177d5c;
  --aries-warning:#9f6408;
  --aries-danger:#b54040;
  --shadow-soft:0 18px 45px rgba(13,39,64,.08);
  --shadow-panel:0 24px 60px rgba(13,39,64,.10);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Aptos","Segoe UI Variable","Trebuchet MS",sans-serif;
  color:var(--aries-ink);
  background:
    radial-gradient(circle at top left,rgba(42,166,200,.14),transparent 26%),
    radial-gradient(circle at bottom right,rgba(13,92,140,.10),transparent 24%),
    linear-gradient(180deg,#f7fafc 0%,var(--aries-cream) 100%);
  min-width:320px;
}
a{color:var(--aries-blue);text-decoration:none}
a:hover{text-decoration:none}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit}

.app-shell{
  min-height:100vh;
  display:grid;
  grid-template-columns:280px minmax(0,1fr);
  position:relative;
}

.sidebar{
  position:sticky;
  top:0;
  height:100vh;
  padding:28px 18px;
  color:var(--aries-white);
  background:
    linear-gradient(180deg,rgba(255,255,255,.08),transparent 18%),
    linear-gradient(165deg,#071728 0%,#0d2740 42%,#0b5f85 100%);
  border-right:1px solid rgba(255,255,255,.12);
  display:flex;
  flex-direction:column;
  gap:18px;
  overflow:auto;
}

.brand{
  display:flex;
  gap:14px;
  align-items:center;
  margin-bottom:26px;
  padding:14px 12px;
  border-radius:22px;
  background:rgba(255,255,255,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10);
}
.brand img{width:52px;height:52px;object-fit:contain}
.brand-mark{display:flex;flex-direction:column;gap:4px}
.brand-mark strong{font-size:1rem;letter-spacing:.03em;color:var(--aries-white)}
.brand-mark span{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.72)}

.sidebar nav{display:flex;flex-direction:column;gap:7px}
.sidebar a{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 14px;
  border-radius:16px;
  color:rgba(255,255,255,.92);
  font-weight:700;
  transition:transform .18s ease,background .18s ease,color .18s ease;
}
.sidebar a:hover,
.sidebar a:focus-visible{
  background:rgba(255,255,255,.14);
  color:var(--aries-white);
  transform:translateX(3px);
}
.sidebar a.is-active{
  background:linear-gradient(135deg,rgba(255,255,255,.20),rgba(255,255,255,.10));
  color:var(--aries-white);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 14px 24px rgba(0,0,0,.14);
}
.sidebar-footer{
  margin-top:auto;
  padding:16px 14px 18px;
  border-radius:20px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.10);
}
.sidebar-kicker{
  margin-bottom:8px;
  font-size:.75rem;
  font-weight:800;
  letter-spacing:.10em;
  text-transform:uppercase;
  color:rgba(255,255,255,.66);
}
.sidebar-footer p{
  margin:0;
  color:rgba(255,255,255,.78);
  line-height:1.6;
  font-size:.92rem;
}

.main{
  min-width:0;
  padding:26px 30px 44px;
}
.main-inner{
  width:min(1380px,100%);
  margin:0 auto;
}

.topbar{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:18px;
  padding:22px 24px;
  margin-bottom:22px;
  border:1px solid rgba(214,224,231,.9);
  border-radius:28px;
  background:rgba(255,255,255,.86);
  backdrop-filter:blur(10px);
  box-shadow:var(--shadow-soft);
  position:sticky;
  top:18px;
  z-index:8;
}
.topbar h1,
.topbar strong{
  display:block;
  margin:0 0 6px;
  color:var(--aries-navy);
  font-size:1.65rem;
  line-height:1.1;
}
.topbar .topbar-meta{
  color:var(--aries-muted);
  font-size:.94rem;
}
.topbar-left{
  display:flex;
  align-items:flex-start;
  gap:16px;
}
.topbar .userbox{
  text-align:right;
  color:var(--aries-muted);
  font-weight:600;
  align-self:center;
}
.userbox-name{
  margin-bottom:4px;
  color:var(--aries-navy);
  font-weight:800;
}

.nav-toggle{
  display:none;
  width:46px;
  height:46px;
  padding:0;
  border:1px solid var(--aries-border);
  border-radius:14px;
  background:#fff;
  box-shadow:var(--shadow-soft);
  cursor:pointer;
}
.nav-toggle span{
  display:block;
  width:18px;
  height:2px;
  margin:4px auto;
  background:var(--aries-navy);
  border-radius:999px;
}

.page{
  display:flex;
  flex-direction:column;
  gap:22px;
}

.hero{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:18px;
  padding:30px 32px;
  border-radius:30px;
  border:1px solid rgba(214,224,231,.9);
  background:
    radial-gradient(circle at top left,rgba(42,166,200,.20),transparent 34%),
    linear-gradient(135deg,#ffffff 0%,#f4f9fc 52%,#edf4f7 100%);
  box-shadow:var(--shadow-panel);
  overflow:hidden;
}
.hero h1{margin:0 0 10px;font-size:2.3rem;color:var(--aries-navy)}
.hero p{margin:0;max-width:760px;color:var(--aries-muted);font-size:1rem;line-height:1.65}

.grid,.grid-2,.grid-3,.grid-4,.cards,.kpi-grid{
  display:grid;
  gap:20px;
}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.cards{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}

.panel,.course-card,.mini-card,.kpi,.answer{
  position:relative;
  padding:22px;
  border-radius:24px;
  border:1px solid rgba(214,224,231,.95);
  background:rgba(255,255,255,.92);
  box-shadow:var(--shadow-soft);
  overflow:hidden;
}
.panel h2,.panel h3,.course-card h2,.mini-card strong,.answer strong{
  margin:0 0 14px;
  color:var(--aries-navy);
}
.panel:before,.course-card:before,.mini-card:before,.answer:before{
  content:"";
  position:absolute;
  inset:0 auto auto 0;
  width:100%;
  height:1px;
  background:linear-gradient(90deg,rgba(42,166,200,.30),transparent 65%);
}

.kpi{
  overflow:hidden;
  min-height:132px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  background:
    radial-gradient(circle at top right,rgba(42,166,200,.16),transparent 28%),
    linear-gradient(180deg,#fff 0%,#f8fbfd 100%);
}
.kpi:after{
  content:"";
  position:absolute;
  inset:auto -10px -28px auto;
  width:92px;
  height:92px;
  border-radius:50%;
  background:rgba(13,92,140,.08);
}
.kpi span{position:relative;z-index:1;font-size:.92rem;font-weight:700;color:var(--aries-muted)}
.kpi strong{position:relative;z-index:1;font-size:2.3rem;line-height:1;color:var(--aries-navy)}
.kpi.danger strong{color:var(--aries-danger)}
.kpi.warning strong{color:var(--aries-warning)}

.list-item{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  padding:15px 16px;
  border-radius:18px;
  border:1px solid var(--aries-line);
  background:linear-gradient(180deg,#fff,#fafcfd);
  margin-bottom:12px;
}
.list-item:last-child{margin-bottom:0}
.list-item strong{display:block;margin-bottom:4px;color:var(--aries-navy)}
.list-item span{color:var(--aries-muted);font-size:.94rem}

.profile-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:18px;
  padding:26px 28px;
  border-radius:28px;
  background:linear-gradient(135deg,#0f3658,#0d5c8c 55%,#2aa6c8 100%);
  color:var(--aries-white);
  box-shadow:var(--shadow-panel);
  overflow:hidden;
}
.profile-header h1{margin:0 0 8px;font-size:2rem}
.profile-header p{margin:0;color:rgba(255,255,255,.82)}
.profile-header .btn{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.18)}
.profile-header .btn:hover{background:rgba(255,255,255,.22)}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:11px 16px;
  border:1px solid transparent;
  border-radius:14px;
  background:linear-gradient(135deg,var(--aries-blue),#0a7ca6);
  color:var(--aries-white);
  font-weight:800;
  letter-spacing:.01em;
  cursor:pointer;
  transition:transform .18s ease,box-shadow .18s ease,filter .18s ease;
  box-shadow:0 12px 24px rgba(13,92,140,.22);
}
.btn:hover{
  transform:translateY(-1px);
  filter:brightness(.98);
  text-decoration:none;
}
.btn.secondary{
  background:#f3f8fb;
  color:var(--aries-blue);
  border-color:var(--aries-border);
  box-shadow:none;
}
.btn.danger{background:linear-gradient(135deg,#b54040,#d35a5a)}

.filters{
  display:flex;
  gap:12px;
  align-items:center;
  margin-bottom:18px;
}
.filters input{flex:1}

form p{margin:0 0 16px}
form p:last-child{margin-bottom:0}
label{
  display:block;
  margin-bottom:6px;
  font-weight:800;
  color:var(--aries-navy);
}
input,select,textarea,.form-control{
  width:100%;
  padding:12px 14px;
  border:1px solid var(--aries-border);
  border-radius:16px;
  background:#fff;
  color:var(--aries-ink);
  transition:border-color .18s ease,box-shadow .18s ease;
}
input:focus,select:focus,textarea:focus,.form-control:focus{
  outline:none;
  border-color:rgba(13,92,140,.55);
  box-shadow:0 0 0 4px rgba(42,166,200,.14);
}
textarea{min-height:120px;resize:vertical}
.helptext{display:block;margin-top:7px;color:var(--aries-muted);font-size:.85rem}
ul.errorlist{
  list-style:none;
  margin:8px 0 0;
  padding:0;
  color:var(--aries-danger);
  font-size:.92rem;
  font-weight:700;
}

table,.table{width:100%;border-collapse:collapse}
table{table-layout:auto}
th{
  padding:0 0 12px;
  text-align:left;
  font-size:.78rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--aries-muted);
}
td{
  padding:14px 12px;
  border-top:1px solid var(--aries-line);
  vertical-align:top;
}
tbody tr:first-child td{border-top:0}
tbody tr.row-danger td{background:rgba(181,64,64,.04)}
tbody tr:hover td{background:rgba(42,166,200,.04)}

.pill,.tag,.badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 11px;
  border-radius:999px;
  font-size:.78rem;
  font-weight:800;
}
.pill,.tag{
  background:#edf6fb;
  color:var(--aries-blue);
  border:1px solid rgba(13,92,140,.12);
}
.tag.urgent{
  background:#fff2e5;
  color:var(--aries-warning);
  border-color:rgba(159,100,8,.16);
}
.badge.ok{background:#e8f7f0;color:var(--aries-success)}
.badge.warn{background:#fff2df;color:var(--aries-warning)}
.badge.danger{background:#fdeaea;color:var(--aries-danger)}
.badge.info{background:#e8f4fb;color:var(--aries-blue)}

.notice,.empty,.message{
  padding:14px 16px;
  border-radius:16px;
  border:1px solid var(--aries-line);
}
.notice{
  background:#edf7fb;
  color:#13496b;
}
.empty{
  text-align:center;
  background:#fbfdfe;
  color:var(--aries-muted);
  border-style:dashed;
}
.messages{margin-bottom:18px}
.message{
  background:#edf7fb;
  color:#13496b;
}
.message.error{
  background:#fdeaea;
  border-color:#f1c5c5;
  color:#8d3030;
}

.dot{
  display:inline-block;
  width:10px;
  height:10px;
  border-radius:50%;
  margin-right:8px;
  vertical-align:middle;
  background:#c1ccd5;
}
.dot.ok{background:var(--aries-success)}
.dot.warning,.dot.warn{background:var(--aries-warning)}
.dot.danger,.dot.expired{background:var(--aries-danger)}
.dot.info{background:var(--aries-blue)}

.timeline{
  position:relative;
  margin-left:8px;
  padding-left:24px;
  border-left:2px solid rgba(42,166,200,.35);
}
.timeline:before{
  content:"";
  position:absolute;
  left:-7px;
  top:4px;
  width:12px;
  height:12px;
  border-radius:50%;
  background:var(--aries-cyan);
  box-shadow:0 0 0 5px rgba(42,166,200,.14);
}

.assistant-form{display:flex;flex-direction:column;gap:14px}
.assistant-form textarea{min-height:160px}
.answer p{margin:0 0 14px;color:var(--aries-ink);line-height:1.6}

.cards .mini-card p,
.course-card p{color:var(--aries-muted);line-height:1.6}
.course-card small{display:block;margin-top:12px;color:var(--aries-muted)}

.reveal{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .5s ease,transform .5s ease;
}
.reveal.is-visible{
  opacity:1;
  transform:translateY(0);
}

.login-body{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:32px 18px;
  background:
    radial-gradient(circle at top left,rgba(42,166,200,.18),transparent 24%),
    radial-gradient(circle at bottom right,rgba(13,92,140,.16),transparent 22%),
    linear-gradient(145deg,#0d2740 0%,#123c61 45%,#eef4f7 45%,#fbf8f2 100%);
}
.login-wrap{
  width:min(980px,100%);
  display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);
  gap:22px;
}
.login-aside,.login-card{
  border-radius:30px;
  box-shadow:var(--shadow-panel);
}
.login-aside{
  padding:38px 34px;
  color:var(--aries-white);
  background:
    radial-gradient(circle at top left,rgba(255,255,255,.16),transparent 24%),
    linear-gradient(165deg,#071728 0%,#0d2740 45%,#0d5c8c 100%);
}
.login-aside h1{margin:0 0 14px;font-size:2.4rem;line-height:1}
.login-aside p{margin:0 0 22px;color:rgba(255,255,255,.78);line-height:1.7}
.login-highlights{
  display:grid;
  gap:12px;
}
.login-highlight{
  padding:14px 16px;
  border-radius:18px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.12);
}
.login-highlight strong{display:block;margin-bottom:4px}
.login-card{
  padding:36px 30px;
  background:rgba(255,255,255,.94);
  border:1px solid rgba(214,224,231,.9);
}
.login-logo{
  width:84px;
  height:84px;
  margin-bottom:16px;
  object-fit:contain;
}
.login-card h2{margin:0 0 8px;color:var(--aries-navy);font-size:1.8rem}
.login-card p{margin:0 0 20px;color:var(--aries-muted);line-height:1.6}
.login-card form{display:flex;flex-direction:column;gap:14px}
.login-card button{width:100%}

@media (max-width:1100px){
  .app-shell{grid-template-columns:1fr}
  .sidebar{
    position:fixed;
    inset:0 auto 0 0;
    width:min(320px,88vw);
    height:100vh;
    border-right:0;
    transform:translateX(-100%);
    transition:transform .22s ease;
    z-index:20;
    box-shadow:0 30px 60px rgba(0,0,0,.28);
  }
  .sidebar.is-open{transform:translateX(0)}
  .main{padding-top:18px}
  .nav-toggle{display:inline-flex;flex-direction:column;justify-content:center}
}

@media (max-width:820px){
  .main{padding:16px 14px 28px}
  .topbar,.hero,.profile-header,.panel,.course-card,.mini-card,.kpi,.answer,.login-card,.login-aside{
    padding:20px;
    border-radius:22px;
  }
  .topbar,.hero,.profile-header{flex-direction:column;align-items:flex-start}
  .grid-2,.grid-3,.grid-4,.login-wrap{grid-template-columns:1fr}
  .filters{flex-direction:column;align-items:stretch}
  .topbar .userbox{text-align:left}
  .topbar{top:10px}
  th,td{font-size:.94rem}
}
