@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700;900&family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap');

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --navy:#0a0f1e;
  --navy2:#111827;
  --surface:#0f172a;
  --surface2:#1e293b;
  --surface3:#263348;
  --blue:#2563eb;
  --blue2:#3b82f6;
  --cyan:#06b6d4;
  --gold:#f59e0b;
  --green:#10b981;
  --red:#ef4444;
  --purple:#8b5cf6;
  --white:#ffffff;
  --gray:#94a3b8;
  --gray2:#cbd5e1;
  --border:rgba(255,255,255,0.08);
  --border2:rgba(255,255,255,0.15);
  --radius:14px;
  --radius-sm:10px;
  --shadow:0 4px 24px rgba(0,0,0,0.4);
  --shadow-lg:0 8px 40px rgba(0,0,0,0.6);
  --nav-h:60px;
}

html{height:100%;-webkit-text-size-adjust:100%}
body{height:100%;font-family:'Plus Jakarta Sans',sans-serif;background:var(--navy);color:var(--white);font-size:15px;line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}
#app{height:100%}
button{font-family:inherit;cursor:pointer;border:none;outline:none;-webkit-tap-highlight-color:transparent}
input,textarea,select{font-family:inherit;outline:none;-webkit-appearance:none}
a{color:inherit;text-decoration:none}
*{-webkit-tap-highlight-color:transparent}

/* ── AUTH ── */
.auth-page{
  min-height:100vh;min-height:100dvh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--navy);padding:20px;
  position:relative;overflow:hidden;
}
.auth-page::before{content:'';position:absolute;width:600px;height:600px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,0.12),transparent 70%);top:-200px;left:-200px;pointer-events:none}
.auth-page::after{content:'';position:absolute;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(6,182,212,0.08),transparent 70%);bottom:-100px;right:-100px;pointer-events:none}
.auth-card{
  background:rgba(15,23,42,0.8);
  border:1px solid var(--border2);
  border-radius:24px;padding:36px 32px;
  width:100%;max-width:420px;
  backdrop-filter:blur(20px);
  box-shadow:var(--shadow-lg);
  position:relative;z-index:1;
}
.auth-logo{display:flex;align-items:center;gap:12px;margin-bottom:28px}
.auth-logo-icon{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:flex;align-items:center;justify-content:center;color:white;font-family:'Playfair Display',serif;font-size:20px;font-weight:900;flex-shrink:0}
.auth-logo-text{font-family:'Playfair Display',serif;font-size:22px;font-weight:700}
.auth-logo-sub{font-size:12px;color:var(--gray);margin-top:1px}
.auth-title{font-family:'Playfair Display',serif;font-size:26px;font-weight:700;margin-bottom:6px}
.auth-subtitle{font-size:14px;color:var(--gray);margin-bottom:24px}
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:12px;font-weight:600;color:var(--gray2);margin-bottom:7px;letter-spacing:0.04em}
.form-input{
  width:100%;padding:13px 16px;
  border:1px solid var(--border2);border-radius:var(--radius-sm);
  font-size:15px;background:rgba(255,255,255,0.05);color:var(--white);
  transition:border 0.2s,background 0.2s;
}
.form-input:focus{border-color:var(--blue2);background:rgba(37,99,235,0.08)}
.form-input::placeholder{color:var(--gray)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;border-radius:100px;font-size:15px;font-weight:700;transition:all 0.2s;min-height:50px;cursor:pointer}
.btn-primary{background:linear-gradient(135deg,var(--blue),var(--cyan));color:white;width:100%;box-shadow:0 0 24px rgba(37,99,235,0.35)}
.btn-primary:active{transform:scale(0.98)}
.btn-primary:disabled{opacity:0.5;cursor:not-allowed}
.btn-ghost{background:rgba(255,255,255,0.05);color:var(--gray2);border:1px solid var(--border2);font-size:14px;border-radius:var(--radius-sm)}
.btn-danger{background:rgba(239,68,68,0.15);color:#f87171;border:1px solid rgba(239,68,68,0.3);font-size:12px;padding:6px 14px;border-radius:var(--radius-sm);min-height:unset}
.auth-switch{margin-top:20px;text-align:center;font-size:14px;color:var(--gray)}
.auth-switch a{color:var(--blue2);font-weight:600}
.error-msg{background:rgba(239,68,68,0.1);color:#f87171;border:1px solid rgba(239,68,68,0.3);border-radius:var(--radius-sm);padding:12px 14px;font-size:13px;margin-bottom:16px}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:0}

/* ── APP LAYOUT ── */
.app-layout{display:flex;height:100vh;height:100dvh;overflow:hidden;flex-direction:column;background:var(--navy)}

/* ── TOP NAV ── */
.top-nav{
  height:var(--nav-h);
  background:rgba(10,15,30,0.9);
  border-bottom:1px solid var(--border);
  backdrop-filter:blur(20px);
  display:flex;align-items:center;padding:0 16px;gap:12px;flex-shrink:0;
  padding-top:env(safe-area-inset-top);
  min-height:calc(var(--nav-h) + env(safe-area-inset-top));
}
.nav-menu-btn{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,0.06);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;border:1px solid var(--border)}
.nav-title{font-family:'Playfair Display',serif;font-size:18px;font-weight:700;flex:1;background:linear-gradient(135deg,white,var(--gray2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.nav-status{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--green);font-weight:600}
.nav-dot{width:7px;height:7px;border-radius:50%;background:var(--green);animation:glow 2s infinite}
@keyframes glow{0%,100%{box-shadow:0 0 4px var(--green)}50%{box-shadow:0 0 10px var(--green)}}
.nav-actions{display:flex;gap:6px}
.nav-icon-btn{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,0.06);display:flex;align-items:center;justify-content:center;font-size:16px;border:1px solid var(--border)}
.nav-icon-btn:active{background:rgba(255,255,255,0.12)}

/* ── DRAWER ── */
.drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);z-index:200;opacity:0;pointer-events:none;transition:opacity 0.25s;backdrop-filter:blur(4px)}
.drawer-overlay.open{opacity:1;pointer-events:all}

/* ── SIDEBAR ── */
.sidebar{
  position:fixed;top:0;left:0;bottom:0;width:300px;
  background:rgba(10,15,30,0.98);
  border-right:1px solid var(--border2);
  display:flex;flex-direction:column;z-index:201;
  transform:translateX(-100%);transition:transform 0.28s cubic-bezier(0.4,0,0.2,1);
  padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);
  backdrop-filter:blur(20px);
}
.sidebar.open{transform:translateX(0)}
.sidebar-top{padding:20px 16px 16px;border-bottom:1px solid var(--border)}
.sidebar-brand{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.brand-icon{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:flex;align-items:center;justify-content:center;color:white;font-family:'Playfair Display',serif;font-size:16px;font-weight:900;flex-shrink:0}
.brand-name{font-family:'Playfair Display',serif;font-size:18px;font-weight:700}
.brand-tag{font-size:10px;color:var(--gray)}
.new-chat-btn{width:100%;padding:12px;border:1px dashed rgba(37,99,235,0.4);border-radius:var(--radius-sm);background:rgba(37,99,235,0.06);color:var(--blue2);font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;transition:all 0.2s}
.new-chat-btn:active{background:rgba(37,99,235,0.15)}
.sidebar-section{padding:14px 16px 6px;font-size:10px;font-weight:700;color:var(--gray);text-transform:uppercase;letter-spacing:0.1em}
.conv-list{flex:1;overflow-y:auto;padding:4px 10px;scrollbar-width:none}
.conv-list::-webkit-scrollbar{display:none}
.conv-item{padding:11px 12px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;gap:10px;color:var(--gray);font-size:13px;margin-bottom:3px;border:1px solid transparent;transition:all 0.15s}
.conv-item:active{background:rgba(255,255,255,0.05)}
.conv-item.active{background:rgba(37,99,235,0.15);color:var(--blue2);border-color:rgba(37,99,235,0.3)}
.conv-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.conv-delete{font-size:18px;color:var(--gray);padding:2px 4px;background:none;border:none;opacity:0.5}
.sidebar-bottom{padding:14px;border-top:1px solid var(--border)}
.user-info{display:flex;align-items:center;gap:10px;padding:12px;border-radius:var(--radius-sm);background:rgba(255,255,255,0.04);border:1px solid var(--border)}
.user-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--cyan));display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}
.user-name{font-size:14px;font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-role{font-size:11px;color:var(--gray);text-transform:capitalize}
.logout-btn{padding:8px;border-radius:var(--radius-sm);background:none;color:var(--gray);font-size:18px;border:none}
.logout-btn:active{color:var(--red)}

/* ── CHAT AREA ── */
.chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.messages-area{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:16px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.messages-area::-webkit-scrollbar{display:none}

/* ── WELCOME ── */
.welcome-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;text-align:center;gap:16px;padding:32px 20px}
.welcome-icon{width:72px;height:72px;border-radius:20px;background:linear-gradient(135deg,var(--blue),var(--cyan));display:flex;align-items:center;justify-content:center;color:white;font-family:'Playfair Display',serif;font-size:32px;font-weight:900;box-shadow:0 0 32px rgba(37,99,235,0.4)}
.welcome-title{font-family:'Playfair Display',serif;font-size:26px;font-weight:700}
.welcome-sub{font-size:14px;color:var(--gray);max-width:300px;line-height:1.7}
.welcome-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:380px}
.welcome-chip{padding:9px 15px;border:1px solid var(--border2);border-radius:100px;font-size:13px;color:var(--gray2);background:rgba(255,255,255,0.04);min-height:40px;transition:all 0.2s}
.welcome-chip:active{border-color:var(--blue2);color:var(--blue2);background:rgba(37,99,235,0.1)}

/* ── MESSAGES ── */
.msg-row{display:flex;gap:10px;align-items:flex-end}
.msg-row.user{flex-direction:row-reverse}
.msg-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}
.msg-avatar.bot{background:linear-gradient(135deg,var(--blue),var(--cyan));color:white}
.msg-avatar.user{background:rgba(255,255,255,0.1);color:var(--gray2);border:1px solid var(--border2)}
.msg-body{display:flex;flex-direction:column;gap:4px;max-width:80%}
.msg-row.user .msg-body{align-items:flex-end}
.msg-tag{font-size:10px;font-weight:700;padding:2px 9px;border-radius:100px;align-self:flex-start;letter-spacing:0.05em}
.tag-syllabus{background:rgba(16,185,129,0.15);color:#34d399}
.tag-exam{background:rgba(139,92,246,0.15);color:#a78bfa}
.tag-deadline{background:rgba(245,158,11,0.15);color:#fbbf24}
.tag-procedure{background:rgba(6,182,212,0.15);color:#22d3ee}
.tag-general{background:rgba(255,255,255,0.06);color:var(--gray2)}
.msg-bubble{padding:12px 16px;border-radius:18px;font-size:15px;line-height:1.6;word-break:break-word}
.bot .msg-bubble{background:rgba(255,255,255,0.06);border:1px solid var(--border2);border-bottom-left-radius:4px;color:var(--gray2)}
.user .msg-bubble{background:linear-gradient(135deg,var(--blue),var(--cyan));color:white;border-bottom-right-radius:4px;box-shadow:0 4px 16px rgba(37,99,235,0.3)}
.msg-time{font-size:10px;color:var(--gray);padding:0 4px}
.typing-dots{display:flex;gap:5px;align-items:center;padding:4px 0}
.typing-dots span{width:7px;height:7px;border-radius:50%;background:var(--gray);animation:bounce 1.3s infinite}
.typing-dots span:nth-child(2){animation-delay:0.2s}
.typing-dots span:nth-child(3){animation-delay:0.4s}
@keyframes bounce{0%,60%,100%{transform:translateY(0)}30%{transform:translateY(-6px)}}

/* ── INPUT ── */
.chat-input-area{background:rgba(10,15,30,0.95);border-top:1px solid var(--border);padding:12px 14px;padding-bottom:max(12px,env(safe-area-inset-bottom));backdrop-filter:blur(20px)}
.suggestions-row{display:flex;gap:7px;margin-bottom:10px;overflow-x:auto;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.suggestions-row::-webkit-scrollbar{display:none}
.sugg-btn{padding:7px 14px;border:1px solid var(--border2);border-radius:100px;font-size:12px;color:var(--gray);background:rgba(255,255,255,0.04);white-space:nowrap;flex-shrink:0;min-height:34px;transition:all 0.2s}
.sugg-btn:active{border-color:var(--blue2);color:var(--blue2);background:rgba(37,99,235,0.1)}
.input-row{display:flex;gap:10px;align-items:flex-end}
.msg-input{flex:1;padding:12px 16px;border:1px solid var(--border2);border-radius:24px;font-size:15px;resize:none;min-height:46px;max-height:120px;line-height:1.5;background:rgba(255,255,255,0.06);color:white;transition:border 0.2s}
.msg-input:focus{border-color:var(--blue2);background:rgba(37,99,235,0.08)}
.msg-input::placeholder{color:var(--gray)}
.send-btn{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,var(--blue),var(--cyan));color:white;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:17px;box-shadow:0 0 16px rgba(37,99,235,0.4);transition:all 0.2s}
.send-btn:active{transform:scale(0.92)}
.send-btn:disabled{background:var(--surface2);box-shadow:none}

/* ── BOTTOM NAV ── */
.bottom-nav{background:rgba(10,15,30,0.95);border-top:1px solid var(--border);display:flex;padding:4px 8px;padding-bottom:max(4px,env(safe-area-inset-bottom));backdrop-filter:blur(20px);flex-shrink:0}
.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;color:var(--gray);font-size:10px;font-weight:600;background:none;border:none;border-radius:var(--radius-sm);min-height:52px;transition:color 0.2s}
.bottom-nav-item.active{color:var(--blue2)}
.bottom-nav-item:active{background:rgba(255,255,255,0.05)}
.bottom-nav-icon{font-size:20px;line-height:1}

/* ── ADMIN ── */
.admin-layout{display:flex;height:100vh;height:100dvh;overflow:hidden;flex-direction:column;background:var(--navy)}
.admin-top-bar{height:var(--nav-h);background:rgba(10,15,30,0.95);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 16px;gap:12px;flex-shrink:0;backdrop-filter:blur(20px);padding-top:env(safe-area-inset-top);min-height:calc(var(--nav-h) + env(safe-area-inset-top))}
.admin-bar-title{font-family:'Playfair Display',serif;font-size:18px;font-weight:700;flex:1;background:linear-gradient(135deg,white,var(--gray2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.admin-exit-btn-top{padding:9px 16px;background:rgba(255,255,255,0.06);color:var(--gray2);border-radius:var(--radius-sm);font-size:13px;font-weight:600;border:1px solid var(--border)}
.admin-content{flex:1;overflow-y:auto;background:var(--navy);-webkit-overflow-scrolling:touch}
.admin-inner{padding:16px;max-width:900px;margin:0 auto}
.admin-page-title{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;margin-bottom:4px;background:linear-gradient(135deg,white,var(--gray2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.admin-page-sub{font-size:13px;color:var(--gray);margin-bottom:20px}
.admin-bottom-nav{background:rgba(10,15,30,0.95);border-top:1px solid var(--border);display:flex;padding:4px 8px;padding-bottom:max(4px,env(safe-area-inset-bottom));backdrop-filter:blur(20px)}
.admin-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px;color:var(--gray);font-size:10px;font-weight:600;background:none;border:none;border-radius:var(--radius-sm);min-height:52px}
.admin-nav-item.active{color:var(--blue2)}
.admin-nav-item:active{background:rgba(255,255,255,0.05)}
.admin-nav-icon{font-size:20px;line-height:1}

/* ── ADMIN DESKTOP SIDEBAR ── */
.admin-nav-desktop{display:none;width:240px;background:rgba(10,15,30,0.98);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0}
.admin-brand{padding:24px 20px 20px;border-bottom:1px solid var(--border)}
.admin-brand-name{font-family:'Playfair Display',serif;font-size:18px;font-weight:700;color:white}
.admin-brand-sub{font-size:11px;color:var(--gray);margin-top:3px}
.nav-items{padding:12px 10px;flex:1}
.admin-nav-desktop .admin-nav-item{flex-direction:row;justify-content:flex-start;gap:12px;font-size:14px;padding:12px 14px;min-height:unset;border-radius:var(--radius-sm);margin-bottom:3px;color:var(--gray)}
.admin-nav-desktop .admin-nav-item.active{background:rgba(37,99,235,0.15);color:var(--blue2)}
.admin-nav-desktop .admin-nav-item:hover{background:rgba(255,255,255,0.05);color:white}
.admin-nav-desktop .admin-nav-icon{font-size:18px}
.exit-section{padding:14px;border-top:1px solid var(--border)}
.admin-nav-desktop .admin-exit-btn-top{width:100%;text-align:left}

/* ── ADMIN CARDS ── */
.admin-card{background:rgba(15,23,42,0.8);border:1px solid var(--border2);border-radius:18px;padding:20px;margin-bottom:14px;backdrop-filter:blur(10px)}
.admin-card-title{font-size:15px;font-weight:700;margin-bottom:14px;color:var(--gray2)}
.badge{display:inline-block;font-size:10px;font-weight:700;padding:3px 10px;border-radius:100px;text-transform:capitalize;letter-spacing:0.05em}
.badge-admin{background:rgba(245,158,11,0.15);color:#fbbf24}
.badge-student{background:rgba(37,99,235,0.15);color:var(--blue2)}
.badge-active{background:rgba(16,185,129,0.15);color:#34d399}
.badge-inactive{background:rgba(239,68,68,0.15);color:#f87171}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.table{width:100%;border-collapse:collapse;font-size:13px;min-width:500px}
.table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-weight:700;color:var(--gray);font-size:11px;text-transform:uppercase;letter-spacing:0.06em}
.table td{padding:12px;border-bottom:1px solid var(--border);vertical-align:middle;color:var(--gray2)}
.table tr:last-child td{border-bottom:none}
.kb-toolbar{padding:14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.kb-search{flex:1;padding:11px 14px;border:1px solid var(--border2);border-radius:var(--radius-sm);font-size:14px;background:rgba(255,255,255,0.05);color:white;min-height:44px}
.kb-search::placeholder{color:var(--gray)}
.btn-add{padding:11px 18px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:white;border-radius:var(--radius-sm);font-size:13px;font-weight:700;min-height:44px;box-shadow:0 0 16px rgba(37,99,235,0.3)}
.kb-edit-btn{font-size:12px;padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border2);background:rgba(255,255,255,0.05);color:var(--gray2);margin-right:6px;min-height:32px}

/* ── MODAL ── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);display:flex;align-items:flex-end;justify-content:center;z-index:300;backdrop-filter:blur(8px)}
.modal{background:var(--surface);border:1px solid var(--border2);border-radius:24px 24px 0 0;padding:24px 20px;width:100%;max-width:600px;box-shadow:var(--shadow-lg);padding-bottom:max(24px,env(safe-area-inset-bottom));max-height:90vh;overflow-y:auto}
.modal-title{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;margin-bottom:20px}
.form-select{width:100%;padding:12px 14px;border:1px solid var(--border2);border-radius:var(--radius-sm);font-size:14px;background:rgba(255,255,255,0.06);color:white;min-height:46px}
.form-select option{background:var(--surface2);color:white}
.form-textarea{width:100%;padding:12px 14px;border:1px solid var(--border2);border-radius:var(--radius-sm);font-size:14px;min-height:110px;resize:vertical;background:rgba(255,255,255,0.06);color:white}
.form-textarea::placeholder{color:var(--gray)}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
.btn-save{padding:12px 24px;background:linear-gradient(135deg,var(--blue),var(--cyan));color:white;border-radius:var(--radius-sm);font-size:14px;font-weight:700;min-height:46px}
.btn-cancel{padding:12px 18px;background:rgba(255,255,255,0.06);border:1px solid var(--border2);color:var(--gray2);border-radius:var(--radius-sm);font-size:14px;min-height:46px}
.empty-state{text-align:center;padding:40px 20px;color:var(--gray);font-size:13px}

/* ── DESKTOP ── */
@media(min-width:768px){
  .app-layout{flex-direction:row}
  .top-nav{display:none}
  .bottom-nav{display:none}
  .drawer-overlay{display:none}
  .sidebar{position:relative;transform:none!important;width:280px;border-right:1px solid var(--border);box-shadow:none}
  .messages-area{padding:24px}
  .msg-body{max-width:70%}
  .chat-input-area{padding:16px 24px}
  .admin-layout{flex-direction:row}
  .admin-top-bar{display:none}
  .admin-bottom-nav{display:none}
  .admin-nav-desktop{display:flex!important}
  .admin-inner{padding:32px}
  .modal-overlay{align-items:center;padding:20px}
  .modal{border-radius:20px;max-height:85vh}
}
