﻿/* ===== CSS Variables & Reset ===== */
:root {
  --primary: #1D4ED8;
  --primary-light: #3B82F6;
  --primary-dark: #1E3A8A;
  --primary-bg: #EFF6FF;
  --red: #B91C1C;
  --red-light: #FEF2F2;
  --success: #10B981;
  --success-light: #ECFDF5;
  --warning: #F59E0B;
  --warning-light: #FFFBEB;
  --gray-50: #F8FAFC;
  --gray-100: #F1F5F9;
  --gray-200: #E2E8F0;
  --gray-300: #CBD5E1;
  --gray-400: #94A3B8;
  --gray-500: #64748B;
  --gray-600: #475569;
  --gray-700: #334155;
  --gray-800: #1E293B;
  --gray-900: #0F172A;
  --white: #FFFFFF;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
  --shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
  --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1);
  --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1);
  --radius-sm: 6px;
  --radius: 8px;
  --radius-lg: 12px;
  --radius-xl: 16px;
  --sidebar-w: 240px;
  --transition: 0.2s cubic-bezier(0.4,0,0.2,1);
  --font-heading: 'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', system-ui, -apple-system, sans-serif;
  --font-body: 'PingFang SC', 'Microsoft YaHei', 'Noto Sans SC', system-ui, -apple-system, sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-font-smoothing:antialiased}
body{font-family:var(--font-body);color:var(--gray-800);background:var(--gray-50);line-height:1.5;overflow-x:hidden}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer;border:none;background:none;font-size:inherit}
input{font-family:inherit;font-size:inherit;border:none;outline:none}
ul,ol{list-style:none}
img{max-width:100%}

/* ===== Scrollbar ===== */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}

/* ===== Sidebar ===== */
.sidebar{
  position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-w);
  background:var(--white);border-right:1px solid var(--gray-200);
  display:flex;flex-direction:column;z-index:100;
  transition:transform var(--transition);
}
.sidebar-brand{
  display:flex;align-items:center;gap:10px;
  padding:20px 20px 16px;border-bottom:1px solid var(--gray-100);
}
.brand-icon{width:28px;height:28px;color:var(--primary)}
.brand-text{font-family:var(--font-heading);font-size:17px;font-weight:700;color:var(--gray-900)}
.sidebar-nav{flex:1;padding:8px;display:flex;flex-direction:column;gap:2px}
.sidebar-footer{padding:8px;border-top:1px solid var(--gray-100);display:flex;flex-direction:column;gap:2px}
.nav-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;border-radius:var(--radius);
  color:var(--gray-600);font-size:14px;font-weight:500;
  transition:all var(--transition);position:relative;
}
.nav-item:hover{background:var(--gray-50);color:var(--gray-900)}
.nav-item.active{background:var(--primary-bg);color:var(--primary);font-weight:600}
.nav-item i{width:20px;height:20px;flex-shrink:0}
.nav-badge{
  margin-left:auto;font-size:11px;font-weight:600;
  background:var(--primary-bg);color:var(--primary);
  padding:2px 8px;border-radius:10px;
}
.nav-item.active .nav-badge{background:var(--primary);color:var(--white)}
.nav-dot{
  margin-left:auto;width:8px;height:8px;border-radius:50%;background:var(--red);
  animation:pulse 2s infinite;
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}

/* ===== Main Content ===== */
.main-content{margin-left:var(--sidebar-w);min-height:100vh}
.page{display:none;padding:0}
.page.active{display:block}
.page-header{
  padding:28px 40px 20px;border-bottom:1px solid var(--gray-200);background:var(--white);
}
.page-header h2{font-family:var(--font-heading);font-size:24px;font-weight:700;color:var(--gray-900)}
.page-desc{color:var(--gray-500);font-size:14px;margin-top:4px}
.page-tabs{display:flex;gap:4px;margin-top:16px}
.tab{
  padding:8px 20px;border-radius:20px;font-size:13px;font-weight:500;
  color:var(--gray-600);background:var(--gray-100);
  transition:all var(--transition);
}
.tab:hover{background:var(--gray-200)}
.tab.active{background:var(--primary);color:var(--white)}

/* ===== Hero Section ===== */
.hero-section{
  position:relative;padding:48px 40px 32px;
  background:linear-gradient(135deg,#1E3A8A 0%,#1D4ED8 50%,#2563EB 100%);
  overflow:hidden;
}
.hero-bg{
  position:absolute;inset:0;opacity:0.06;
  background:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='1'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
.hero-content{position:relative;z-index:1;max-width:720px;margin:0 auto;text-align:center}
.hero-title{font-family:var(--font-heading);font-size:30px;font-weight:700;color:var(--white);line-height:1.3}
.hero-subtitle{color:rgba(255,255,255,0.75);font-size:16px;margin-top:8px}
.search-box{
  display:flex;gap:0;margin-top:24px;
  background:var(--white);border-radius:var(--radius-lg);overflow:hidden;
  box-shadow:var(--shadow-lg);
}
.search-input-wrap{flex:1;position:relative;display:flex;align-items:center}
.search-icon{position:absolute;left:16px;width:20px;height:20px;color:var(--gray-400);pointer-events:none}
.search-input{
  width:100%;padding:14px 16px 14px 46px;
  font-size:15px;color:var(--gray-800);
}
.search-input::placeholder{color:var(--gray-400)}
.search-btn{
  display:flex;align-items:center;gap:6px;
  padding:14px 32px;background:var(--primary);color:var(--white);
  font-size:15px;font-weight:600;border-radius:0;
  transition:background var(--transition);
}
.search-btn:hover{background:var(--primary-dark)}
.search-dropdown{
  position:absolute;top:100%;left:0;right:0;background:var(--white);
  border:1px solid var(--gray-200);border-radius:var(--radius);
  box-shadow:var(--shadow-lg);max-height:300px;overflow-y:auto;
  display:none;z-index:50;
}
.search-dropdown.show{display:block}
.search-dropdown-item{
  display:flex;align-items:center;gap:10px;padding:10px 16px;
  font-size:14px;color:var(--gray-700);cursor:pointer;transition:background var(--transition);
}
.search-dropdown-item:hover{background:var(--gray-50)}
.search-dropdown-item .match{color:var(--primary);font-weight:600}
.hot-tags{display:flex;align-items:center;gap:8px;margin-top:20px;flex-wrap:wrap;justify-content:center}
.hot-label{color:rgba(255,255,255,0.6);font-size:13px}
.tag{
  padding:5px 14px;border-radius:20px;font-size:13px;
  background:rgba(255,255,255,0.15);color:var(--white);
  transition:all var(--transition);
}
.tag:hover{background:rgba(255,255,255,0.25)}

/* ===== Filter Bar ===== */
.filter-bar{padding:20px 40px;background:var(--white);border-bottom:1px solid var(--gray-200)}
.filter-row{display:flex;gap:32px;margin-bottom:12px;flex-wrap:wrap}
.filter-row:last-child{margin-bottom:0}
.filter-row-extra{margin-top:0}
.filter-group{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.filter-label{font-size:13px;font-weight:600;color:var(--gray-500);white-space:nowrap}
.filter-chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{
  padding:6px 14px;border-radius:20px;font-size:13px;font-weight:500;
  color:var(--gray-600);background:var(--gray-100);
  transition:all var(--transition);white-space:nowrap;
}
.chip:hover{background:var(--gray-200);color:var(--gray-800)}
.chip.active{background:var(--primary-bg);color:var(--primary);font-weight:600}
.chip.urgent{background:var(--red-light);color:var(--red);font-weight:600}
.chip.urgent.active{background:var(--red);color:var(--white)}
.filter-actions{
  display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding-top:8px;
  border-top:1px solid var(--gray-100);
}
.result-count{font-size:13px;color:var(--gray-500)}
.result-count strong{color:var(--gray-800)}

/* ===== Buttons ===== */
.btn{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 16px;border-radius:var(--radius);
  font-size:14px;font-weight:500;transition:all var(--transition);
}
.btn-primary{background:var(--primary);color:var(--white)}
.btn-primary:hover{background:var(--primary-dark)}
.btn-ghost{color:var(--gray-600);background:transparent}
.btn-ghost:hover{background:var(--gray-100);color:var(--gray-800)}
.btn-sm{padding:5px 10px;font-size:12px}
.btn-success{background:var(--success);color:var(--white)}
.btn-success:hover{background:#059669}
.btn-outline{border:1px solid var(--gray-300);color:var(--gray-700)}
.btn-outline:hover{background:var(--gray-50)}
.btn-red{background:var(--red);color:var(--white)}
.btn-red:hover{background:#991B1B}
.view-toggle{padding:6px 8px}
.view-toggle.active{background:var(--gray-200)}

/* ===== Stats Row ===== */
.stats-row{
  display:grid;grid-template-columns:repeat(4,1fr);gap:16px;
  padding:24px 40px;
}
.stat-card{
  background:var(--white);border:1px solid var(--gray-200);
  border-radius:var(--radius-lg);padding:20px 24px;
  text-align:center;transition:all var(--transition);
}
.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.stat-value{font-family:var(--font-heading);font-size:32px;font-weight:700;color:var(--gray-900)}
.stat-value.urgent{color:var(--red)}
.stat-label{font-size:13px;color:var(--gray-500);margin-top:4px}

/* ===== Data Table ===== */
.table-section{padding:0 40px 40px}
.table-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 0;
}
.section-title{font-family:var(--font-heading);font-size:18px;font-weight:700;color:var(--gray-900)}
.table-wrap{background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);overflow:hidden}
.table-scroll{overflow-x:auto}
.job-table{width:100%;border-collapse:collapse;font-size:13px;min-width:1400px}
.job-table th{
  padding:12px 14px;text-align:left;font-size:12px;font-weight:600;
  color:var(--gray-500);text-transform:uppercase;letter-spacing:0.5px;
  background:var(--gray-50);border-bottom:1px solid var(--gray-200);white-space:nowrap;
}
.job-table td{padding:10px 12px;border-bottom:1px solid var(--gray-100);color:var(--gray-700);vertical-align:middle;line-height:1.45}
.job-table tbody tr{transition:background var(--transition)}
.job-table tbody tr:hover{background:var(--primary-bg)}
.company-name{font-weight:600;color:var(--gray-900);display:flex;align-items:center;gap:8px}
.company-logo{
  width:36px;height:36px;border-radius:var(--radius-sm);
  background:var(--primary-bg);display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:700;color:var(--primary);flex-shrink:0;
}
.badge{
  display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;white-space:nowrap;
}
.badge-blue{background:var(--primary-bg);color:var(--primary)}
.badge-green{background:var(--success-light);color:var(--success)}
.badge-yellow{background:var(--warning-light);color:var(--warning)}
.badge-red{background:var(--red-light);color:var(--red)}
.badge-gray{background:var(--gray-100);color:var(--gray-600)}
.deadline-countdown{
  display:flex;align-items:center;gap:4px;font-weight:600;white-space:nowrap;
}
.deadline-countdown.urgent{color:var(--red)}
.deadline-countdown.warning{color:var(--warning)}
.deadline-countdown i{width:14px;height:14px}
/* Column width control */
.job-table .col-company{min-width:130px;max-width:180px}
.job-table .col-type{width:85px}
.job-table .col-industry{min-width:80px;max-width:110px}
.job-table .col-recruit{width:80px}
.job-table .col-target{width:85px}
.job-table .col-location{width:80px}
.job-table .col-job{min-width:100px;max-width:150px}
.job-table .col-status{width:85px}
.job-table .col-update{width:90px}
.job-table .col-deadline{width:105px}
.job-table .col-links{width:90px}
.job-table .col-announce{width:75px}
.job-table .col-exam{min-width:80px;max-width:120px}
.job-table .col-size{width:85px}
.job-table .col-notes{min-width:110px;max-width:180px}

/* Text clamping - max 3 lines */
.cell-text{
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
  text-overflow:ellipsis;
  word-break:break-word;
}

/* Company logo inline */
.company-logo-inline{
  display:inline-block;
  width:24px;height:24px;
  line-height:24px;
  border-radius:4px;
  background:var(--primary-bg);
  text-align:center;
  font-size:12px;font-weight:700;
  color:var(--primary);
  margin-right:6px;
  vertical-align:middle;
  flex-shrink:0;
}
.welfare-tags{display:flex;gap:4px;flex-wrap:wrap}
.welfare-tag{padding:2px 8px;border-radius:4px;font-size:11px;background:var(--success-light);color:var(--success);white-space:nowrap}
.link-btn{
  display:inline-flex;align-items:center;gap:4px;padding:4px 10px;
  border-radius:var(--radius-sm);font-size:12px;font-weight:500;
  border:1px solid var(--gray-300);color:var(--gray-600);transition:all var(--transition);
}
.link-btn:hover{background:var(--primary-bg);border-color:var(--primary);color:var(--primary)}
.link-btn.primary-link{background:var(--primary);color:var(--white);border-color:var(--primary)}
.link-btn.primary-link:hover{background:var(--primary-dark)}

/* ===== Card View ===== */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px;padding:24px 40px}
.job-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  padding:20px;transition:all var(--transition);
}
.job-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.job-card-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.job-card-body{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:13px}
.job-card-body .field-label{color:var(--gray-500);font-size:11px;display:block}
.job-card-body .field-value{color:var(--gray-800);font-weight:500}
.job-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:12px;border-top:1px solid var(--gray-100)}
/* ===== Kanban Board ===== */
.kanban-board{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;padding:24px 40px;overflow-x:auto}
.kanban-col{
  background:var(--gray-50);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  min-width:200px;
}
.kanban-col-header{
  padding:14px 16px;border-bottom:1px solid var(--gray-200);
  display:flex;align-items:center;justify-content:space-between;
}
.kanban-col-title{font-size:13px;font-weight:600;color:var(--gray-700)}
.kanban-count{font-size:13px;font-weight:700;color:var(--gray-400)}
.kanban-col-body{padding:12px;display:flex;flex-direction:column;gap:10px;min-height:400px}
.kanban-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);
  padding:14px;transition:all var(--transition);cursor:pointer;
}
.kanban-card:hover{box-shadow:var(--shadow-md)}
.kanban-card .kc-company{font-size:14px;font-weight:600;color:var(--gray-900)}
.kanban-card .kc-job{font-size:13px;color:var(--gray-500);margin-top:2px}
.kanban-card .kc-meta{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:11px;color:var(--gray-400)}
.kanban-card .kc-deadline{display:flex;align-items:center;gap:4px;margin-top:6px}
.kanban-card .kc-deadline.urgent{color:var(--red);font-weight:600}
.kanban-card .kc-actions{display:flex;gap:6px;margin-top:10px}
.col-pending .kanban-col-header{border-left:3px solid var(--gray-400)}
.col-passed .kanban-col-header{border-left:3px solid var(--success)}
.col-test .kanban-col-header{border-left:3px solid var(--primary)}
.col-interview .kanban-col-header{border-left:3px solid var(--warning)}
.col-offer .kanban-col-header{border-left:3px solid #8B5CF6}
.col-done .kanban-col-header{border-left:3px solid var(--gray-600)}

/* ===== Resources Grid ===== */
.resources-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;padding:24px 40px}
.resource-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  overflow:hidden;transition:all var(--transition);
}
.resource-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.resource-cover{
  height:140px;display:flex;align-items:center;justify-content:center;
  font-size:40px;color:var(--white);
}
.resource-cover.c1{background:linear-gradient(135deg,#1D4ED8,#3B82F6)}
.resource-cover.c2{background:linear-gradient(135deg,#B91C1C,#EF4444)}
.resource-cover.c3{background:linear-gradient(135deg,#10B981,#34D399)}
.resource-cover.c4{background:linear-gradient(135deg,#8B5CF6,#A78BFA)}
.resource-cover.c5{background:linear-gradient(135deg,#F59E0B,#FBBF24)}
.resource-body{padding:16px}
.resource-body h4{font-size:15px;font-weight:600;color:var(--gray-900);margin-bottom:4px}
.resource-body p{font-size:13px;color:var(--gray-500);margin-bottom:12px}
.resource-body .resource-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--gray-400)}
.resource-body .resource-meta .downloads{display:flex;align-items:center;gap:4px}
.resource-body .btn{margin-top:8px;width:100%;justify-content:center}

/* ===== Wall Grid ===== */
.wall-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px;padding:24px 40px}
.wall-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  padding:20px;transition:all var(--transition);
  border-left:4px solid var(--primary);
}
.wall-card:hover{box-shadow:var(--shadow-md)}
.wall-card .wall-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.wall-card .wall-company{font-size:15px;font-weight:600;color:var(--gray-900)}
.wall-card .wall-date{font-size:12px;color:var(--gray-400)}
.wall-card .wall-table{width:100%;font-size:13px;border-collapse:collapse}
.wall-card .wall-table td{padding:4px 8px;border-bottom:1px solid var(--gray-50)}
.wall-card .wall-table td:first-child{color:var(--gray-500);width:70px}
.wall-card .wall-table td:last-child{font-weight:500}

/* ===== Reviews Grid ===== */
.reviews-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:16px;padding:24px 40px}
.review-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  padding:20px;transition:all var(--transition);
}
.review-card:hover{box-shadow:var(--shadow-md)}
.review-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.review-company{font-size:15px;font-weight:600;color:var(--gray-900)}
.review-rating{display:flex;gap:2px}
.review-rating .star{width:16px;height:16px;color:var(--warning);fill:var(--warning)}
.review-rating .star.empty{color:var(--gray-200);fill:var(--gray-200)}
.review-body{font-size:14px;color:var(--gray-600);line-height:1.6}
.review-tags{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.review-tag{padding:3px 10px;border-radius:12px;font-size:11px;font-weight:500}
.review-tag.positive{background:var(--success-light);color:var(--success)}
.review-tag.negative{background:var(--red-light);color:var(--red)}
.review-tag.neutral{background:var(--gray-100);color:var(--gray-600)}
.review-footer{display:flex;align-items:center;gap:12px;margin-top:12px;font-size:12px;color:var(--gray-400)}

/* ===== Calculator Panel ===== */
.calculator-panel{max-width:680px;margin:24px 40px;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:32px}
.calc-group{margin-bottom:24px}
.calc-label{font-size:14px;font-weight:600;color:var(--gray-700);margin-bottom:8px;display:block}
.calc-select,.calc-input{
  width:100%;padding:10px 14px;border:1px solid var(--gray-300);border-radius:var(--radius);
  font-size:14px;color:var(--gray-800);transition:border-color var(--transition);
}
.calc-select:focus,.calc-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}
.calc-result{background:var(--primary-bg);border-radius:var(--radius-lg);padding:24px;margin-top:24px;text-align:center}
.calc-result .score{font-size:48px;font-weight:700;color:var(--primary);font-family:var(--font-heading)}
.calc-result .score-label{font-size:14px;color:var(--gray-500);margin-top:4px}
.calc-result .score-detail{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;text-align:left;font-size:13px}
.calc-result .score-detail .sd-label{color:var(--gray-500)}
.calc-result .score-detail .sd-value{color:var(--gray-800);font-weight:500;text-align:right}
.calc-result .verdict{margin-top:16px;padding:10px 16px;border-radius:var(--radius);font-size:14px;font-weight:600}

/* ===== Resume Layout ===== */
.resume-layout{display:grid;grid-template-columns:1fr 2fr;gap:24px;padding:24px 40px}
.resume-sidebar{display:flex;flex-direction:column;gap:16px}
.resume-panel{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:20px;
}
.resume-panel h4{font-size:15px;font-weight:600;color:var(--gray-900);margin-bottom:12px}
.resume-list{display:flex;flex-direction:column;gap:10px}
.resume-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px;border:1px solid var(--gray-200);border-radius:var(--radius);
  transition:all var(--transition);
}
.resume-item:hover{border-color:var(--primary);background:var(--primary-bg)}
.resume-item .ri-name{font-weight:500;font-size:14px}
.resume-item .ri-date{font-size:12px;color:var(--gray-400)}
.resume-preview{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);padding:40px;
  min-height:600px;display:flex;align-items:center;justify-content:center;color:var(--gray-400);
}

/* ===== Referral Page ===== */
.referral-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  padding:24px;transition:all var(--transition);
}
.referral-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.referral-card .ref-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.ref-avatar{
  width:48px;height:48px;border-radius:50%;background:var(--primary-bg);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;font-weight:700;color:var(--primary);
}
.ref-company{font-size:16px;font-weight:600;color:var(--gray-900)}
.ref-department{font-size:13px;color:var(--gray-500)}
.ref-code{
  display:flex;align-items:center;gap:10px;padding:10px 16px;
  background:var(--gray-50);border-radius:var(--radius);margin:12px 0;
}
.ref-code .code-text{font-family:monospace;font-size:16px;font-weight:700;color:var(--primary);letter-spacing:2px}
.ref-code .copy-btn{padding:4px 8px;font-size:11px}
.ref-footer{display:flex;align-items:center;justify-content:space-between;margin-top:12px;font-size:12px;color:var(--gray-400)}

/* ===== Subscription Banner ===== */
.sub-banner{
  margin:24px 40px;padding:20px 24px;background:var(--primary-bg);
  border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:space-between;
  border:1px solid rgba(29,78,216,0.2);
}
.sub-banner .sub-text{font-size:14px;color:var(--gray-700)}
.sub-banner .sub-text strong{color:var(--primary)}

/* ===== Toast ===== */
.toast-container{position:fixed;top:24px;right:24px;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius);
  padding:12px 20px;box-shadow:var(--shadow-lg);font-size:14px;
  animation:slideIn 0.3s ease;max-width:360px;
}
.toast.success{border-left:4px solid var(--success)}
.toast.error{border-left:4px solid var(--red)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* ===== Skeleton ===== */
.skeleton{background:linear-gradient(90deg,var(--gray-100) 25%,var(--gray-200) 50%,var(--gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}

/* ===== Responsive ===== */
@media(max-width:1024px){
  .kanban-board{grid-template-columns:repeat(3,1fr)}
  .stats-row{grid-template-columns:repeat(2,1fr)}
  .card-grid{grid-template-columns:1fr}
  .resume-layout{grid-template-columns:1fr}
}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .main-content{margin-left:0}
  .hero-section{padding:32px 20px}
  .hero-title{font-size:22px}
  .filter-bar{padding:16px 20px}
  .filter-row{flex-direction:column;gap:12px}
  .table-section{padding:0 16px 24px}
  .stats-row{padding:16px;gap:10px}
  .stat-card{padding:14px 16px}
  .stat-value{font-size:24px}
  .card-grid,.reviews-grid,.wall-grid,.resources-grid{padding:16px}
  .kanban-board{grid-template-columns:1fr;padding:16px}
  .page-header{padding:20px}
  .calculator-panel{margin:16px;padding:20px}
  .sub-banner{margin:16px}
  .job-table{min-width:900px}
  .mobile-menu-btn{display:flex}
}
@media(min-width:769px){.mobile-menu-btn{display:none}}

/* Mobile menu button */
.mobile-menu-btn{
  position:fixed;top:12px;left:12px;z-index:200;
  width:40px;height:40px;border-radius:var(--radius);
  background:var(--white);border:1px solid var(--gray-200);
  align-items:center;justify-content:center;display:none;
  box-shadow:var(--shadow);
}

/* Page: Campus extra cards */
.campus-card{
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  padding:20px;transition:all var(--transition);
}
.campus-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.campus-card .cc-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.campus-card .cc-degree{font-size:13px;color:var(--gray-500)}
.campus-card .cc-deadline{display:flex;align-items:center;gap:4px;font-size:13px;margin-top:10px}
.campus-card .cc-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.cc-badge{padding:3px 10px;border-radius:12px;font-size:11px;font-weight:500;background:var(--primary-bg);color:var(--primary)}

/* ===== Auth: Sidebar Login Button ===== */
.sidebar-user{padding:12px 14px;border-bottom:1px solid var(--gray-100)}
.btn-login{
  display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;
  border-radius:var(--radius);background:var(--primary);color:var(--white);
  font-size:14px;font-weight:600;transition:all var(--transition);
  justify-content:center;
}
.btn-login:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}
.btn-login i{width:18px;height:18px}

/* User info (logged in state) */
.user-info{position:relative}
.user-avatar{
  width:40px;height:40px;border-radius:50%;background:var(--primary);
  color:var(--white);display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:700;cursor:pointer;transition:all var(--transition);
  margin:0 auto 6px;
}
.user-avatar:hover{box-shadow:0 0 0 3px var(--primary-bg)}
.user-detail{text-align:center}
.user-name{display:block;font-size:14px;font-weight:600;color:var(--gray-800)}
.user-phone{display:block;font-size:11px;color:var(--gray-400);margin-top:2px}
.user-dropdown{
  position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:8px;
  background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg);min-width:180px;padding:6px;display:none;z-index:200;
}
.user-dropdown.show{display:block}
.dropdown-item{
  display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;
  border-radius:var(--radius-sm);font-size:13px;color:var(--gray-700);
  transition:all var(--transition);
}
.dropdown-item:hover{background:var(--gray-50)}
.dropdown-item.danger{color:var(--red)}
.dropdown-item.danger:hover{background:var(--red-light)}
.dropdown-item i{width:16px;height:16px}
.dropdown-divider{height:1px;background:var(--gray-100);margin:4px 0}

/* ===== Modal ===== */
.modal-overlay{
  position:fixed;inset:0;background:rgba(15,23,42,0.5);z-index:900;
  display:none;align-items:center;justify-content:center;
  backdrop-filter:blur(4px);
}
.modal-overlay.show{display:flex}
.modal{
  background:var(--white);border-radius:var(--radius-xl);width:440px;max-width:92vw;
  max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,0.25);
  display:none;z-index:901;animation:modalIn 0.25s ease;
}
.modal.show{display:block}
@keyframes modalIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}
.modal-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 24px 0;
}
.modal-header h3{font-family:var(--font-heading);font-size:20px;font-weight:700;color:var(--gray-900)}
.modal-close{
  width:32px;height:32px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;
  color:var(--gray-400);transition:all var(--transition);
}
.modal-close:hover{background:var(--gray-100);color:var(--gray-600)}
.modal-body{padding:20px 24px 28px}

/* ===== Form ===== */
.form-group{margin-bottom:18px}
.form-label{display:block;font-size:13px;font-weight:600;color:var(--gray-700);margin-bottom:6px}
.form-input{
  width:100%;padding:10px 14px;border:1px solid var(--gray-300);border-radius:var(--radius);
  font-size:14px;color:var(--gray-800);transition:all var(--transition);background:var(--white);
}
.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-bg)}
.form-input.error{border-color:var(--red);box-shadow:0 0 0 3px var(--red-light)}
.form-input::placeholder{color:var(--gray-400)}
.form-error{display:block;font-size:12px;color:var(--red);margin-top:4px;min-height:18px}
.form-submit{width:100%;justify-content:center;padding:12px;font-size:15px;margin-top:4px}
.form-switch{text-align:center;margin-top:16px;font-size:13px;color:var(--gray-500)}
.form-switch a{color:var(--primary);font-weight:600}
.form-switch a:hover{text-decoration:underline}
.form-options{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;font-size:13px}
.checkbox-label{display:flex;align-items:center;gap:6px;color:var(--gray-600);cursor:pointer;font-size:13px}
.checkbox-label input[type=checkbox]{accent-color:var(--primary)}
.link-forgot{color:var(--primary);font-size:13px}
.link-forgot:hover{text-decoration:underline}
.form-agreement{margin-bottom:16px}
.form-agreement .checkbox-label{font-size:12px}
.form-agreement a{color:var(--primary)}

/* Password toggle */
.password-wrap{position:relative}
.password-wrap .form-input{padding-right:44px}
.password-toggle{
  position:absolute;right:4px;top:50%;transform:translateY(-50%);
  width:36px;height:36px;display:flex;align-items:center;justify-content:center;
  color:var(--gray-400);border-radius:var(--radius-sm);transition:all var(--transition);
}
.password-toggle:hover{color:var(--gray-600);background:var(--gray-50)}

/* Phone input */
.phone-wrap{display:flex;gap:0}
.phone-prefix{
  display:flex;align-items:center;padding:10px 12px;
  border:1px solid var(--gray-300);border-right:none;border-radius:var(--radius) 0 0 var(--radius);
  background:var(--gray-50);font-size:14px;color:var(--gray-600);font-weight:500;
}
.phone-wrap .form-input{border-radius:0 var(--radius) var(--radius) 0}

/* SMS */
.sms-wrap{display:flex;gap:10px}
.sms-wrap .form-input{flex:1}
.btn-sms{
  padding:10px 16px;border-radius:var(--radius);font-size:13px;font-weight:600;
  background:var(--gray-100);color:var(--gray-600);white-space:nowrap;
  transition:all var(--transition);border:1px solid var(--gray-300);
}
.btn-sms:hover:not(:disabled){background:var(--primary-bg);color:var(--primary);border-color:var(--primary)}
.btn-sms:disabled{opacity:0.5;cursor:not-allowed}
.btn-sms.counting{background:var(--primary-bg);color:var(--primary);border-color:var(--primary)}



/* ===== Pagination ===== */
.pagination{display:flex;align-items:center;justify-content:space-between;padding:16px 0;flex-wrap:wrap;gap:12px}
.pagination-info{font-size:13px;color:var(--gray-500)}
.pagination-btns{display:flex;align-items:center;gap:4px}
.pagination-jump{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--gray-500)}
.page-btn{
  min-width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--gray-200);border-radius:var(--radius-sm);font-size:13px;font-weight:500;
  color:var(--gray-600);background:var(--white);transition:all var(--transition);cursor:pointer;
}
.page-btn:hover:not(:disabled):not(.active){border-color:var(--primary);color:var(--primary);background:var(--primary-bg)}
.page-btn.active{background:var(--primary);color:var(--white);border-color:var(--primary);font-weight:600}
.page-btn:disabled{opacity:0.35;cursor:not-allowed}
.page-ellipsis{min-width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--gray-400)}
.page-jump-input{
  width:56px;padding:6px 8px;border:1px solid var(--gray-300);border-radius:var(--radius-sm);
  font-size:13px;text-align:center;color:var(--gray-800);transition:border-color var(--transition);
}
.page-jump-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-bg);outline:none}
.page-jump-btn{padding:6px 14px;font-size:12px}


/* ===== Dynamic UI: Live Indicator ===== */
.live-indicator{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11px;color:var(--gray-500);font-weight:500;
  padding:4px 10px;border-radius:12px;background:var(--gray-50);
  border:1px solid var(--gray-100);
}
.live-dot{
  width:7px;height:7px;border-radius:50%;display:inline-block;
}
.live-dot.online{background:var(--success);box-shadow:0 0 0 3px var(--success-light);animation:livePulse 2s infinite}
.live-dot.offline{background:var(--gray-400)}
@keyframes livePulse{0%,100%{box-shadow:0 0 0 3px var(--success-light)}50%{box-shadow:0 0 0 7px rgba(16,185,129,0.1)}}

/* ===== New Badge ===== */
.new-badge{
  display:flex;align-items:center;justify-content:center;
  min-width:22px;height:22px;padding:0 6px;border-radius:11px;
  background:var(--red);color:var(--white);font-size:11px;font-weight:700;
  cursor:pointer;transition:all var(--transition);
}
.new-badge:hover{background:#991B1B;transform:scale(1.05)}
.new-badge.pulse{animation:badgePulse 1s ease-in-out infinite}
@keyframes badgePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}

/* ===== Refresh Button States ===== */
#btnRefresh{transition:all var(--transition)}
#btnRefresh:disabled{opacity:0.6;cursor:wait}
#btnRefresh.refreshing i{animation:spin 0.8s linear infinite}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* ===== Dynamic: Table Section Adjust ===== */
.table-section .table-header{gap:8px}

/* ===== NEW Badge in Table/Card ===== */
.badge-new{
  display:inline-block;padding:1px 6px;border-radius:3px;
  background:var(--red);color:var(--white);font-size:10px;font-weight:700;
  letter-spacing:0.5px;animation:newFlash 1.5s ease-in-out infinite;
  vertical-align:middle;margin-left:6px;
}
@keyframes newFlash{0%,100%{opacity:1}50%{opacity:0.6}}

/* ===== Toast Animation ===== */
.toast{animation:slideIn 0.3s ease}
.toast.success{border-left:4px solid var(--success);background:#F0FDF4}
