@import url("https://fonts.googleapis.com/css?family=Poppins:400,600,800");:root{--bg:#f8fafc;--card:#fff;--card-hover:#f1f5f9;--border:#e2e8f0;--border-light:#f1f5f9;--text-primary:#0f172a;--text-secondary:#1a1c1f;--text-muted:#000;--text-faint:#000;--accent-blue:#3b82f6;--accent-purple:#8b5cf6;--accent-green:#10b981;--accent-yellow:#f59e0b;--accent-red:#ef4444;--accent-orange:#f97316;--accent-pink:#ec4899;--shadow-sm:0 1px 3px rgba(0,0,0,.06);--shadow-md:0 4px 12px rgba(0,0,0,.08);--shadow-lg:0 8px 24px rgba(0,0,0,.1);--radius-sm:8px;--radius-md:12px;--radius-lg:16px}*{box-sizing:border-box;margin:0;padding:0}.portal{min-height:100vh;background:var(--bg);font-family:Poppins,Segoe UI,sans-serif;color:var(--text-primary)}.portal-content{max-width:1280px;margin:0 auto;padding:24px 28px}.navbar{background:#fff;border-bottom:1px solid var(--border);padding:12px 28px;gap:16;position:-webkit-sticky;position:sticky;top:0;z-index:100;box-shadow:var(--shadow-sm)}.navbar,.navbar-avatar{display:flex;align-items:center}.navbar-avatar{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,var(--accent-blue),var(--accent-purple));justify-content:center;font-size:14px;font-weight:800;color:#fff}.navbar-info-name{font-size:14px;font-weight:700;color:var(--text-primary)}.navbar-info-meta{font-size:13px;color:var(--text-muted)}.navbar-back{margin-left:auto;padding:7px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:var(--text-secondary);font-size:12px;font-weight:500;cursor:pointer;transition:all .2s}.navbar-back:hover{background:var(--card-hover);border-color:var(--accent-blue);color:var(--accent-blue)}.card-coding{background:var(--card);border-radius:var(--radius-lg);padding:20px;border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:box-shadow .2s}.card-coding:hover{box-shadow:var(--shadow-md)}.card-accent-top{position:relative;overflow:hidden}.card-accent-top:before{content:"";position:absolute;top:0;left:0;right:0;height:3px}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.grid-3{grid-template-columns:1fr 1fr 1fr}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px}.grid-5{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:8px;gap:8px}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mb-24{margin-bottom:24px}.section-label{font-size:12px;font-weight:600;color:var(--text-primary);margin-bottom:14px;display:flex;align-items:center;gap:8px}.section-label-bar{width:4px;height:18px;border-radius:2px}.grand-total-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.grand-total-label{font-size:13px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;font-weight:600}.grand-total-sublabel{font-size:12px;color:var(--text-faint);margin-top:2px}.grand-total-number{font-size:30px;font-weight:600;color:var(--text-primary)}.grand-total-breakdown{display:flex;gap:10px}.grand-total-box{flex:1 1;border-radius:10px;padding:10px 0;text-align:center}.grand-total-box-value{font-size:22px;font-weight:700}.grand-total-box-label{font-size:12px;color:var(--text-muted);margin-top:2px}.grand-total-sources{display:flex;justify-content:center;gap:16px;margin-top:12px}.grand-total-source{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.grand-total-source-dot{width:8px;height:8px;border-radius:4px}.grand-total-source-val{font-weight:700}.combined-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.stat-box{border-radius:10px;padding:10px 6px;text-align:center}.stat-box-value{font-size:20px;font-weight:700}.stat-box-label{font-size:12px;color:var(--text-muted)}.stat-box-sub{font-size:12px;color:var(--text-faint)}.platform-header{display:flex;align-items:center;gap:10px;margin-bottom:14px}.platform-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#fff}.platform-icon-lc{background:linear-gradient(135deg,#ffa116,#ff6b00)}.platform-icon-cc{background:linear-gradient(135deg,#5c4033,#8b6914)}.platform-icon-hr{background:linear-gradient(135deg,#00d160,#00a94f)}.platform-name{font-size:14px;font-weight:700}.platform-sub{font-size:13px;color:var(--text-muted)}.platform-total{margin-left:auto;text-align:right}.platform-total-num{font-size:22px;font-weight:700;color:var(--text-primary)}.platform-total-label{font-size:12px;color:var(--text-muted)}.platform-stats-row{display:flex;gap:8px;margin-bottom:10px}.platform-stat-cell{flex:1 1;background:var(--card-hover);border-radius:10px;padding:8px 0;text-align:center}.platform-stat-val{font-size:18px;font-weight:700}.platform-stat-label{font-size:12px;color:var(--text-muted)}.platform-footer{display:flex;justify-content:space-between;align-items:center}.platform-streak{font-size:12px;font-weight:600}.platform-contest{font-size:13px;font-weight:600;border-radius:var(--radius-sm);padding:4px 10px}.platform-contest-lc{background:#fff7ed;border:1px solid #fdba74;color:#ea580c}.platform-contest-cc{background:#fdf8f0;border:1px solid #d4a574;color:#92400e}.badge-list{display:flex;flex-wrap:wrap;gap:4px}.hr-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:20px;background:#ecfdf5;border:1px solid #a7f3d0;font-size:13px;color:#059669;font-weight:500}.course-perf-scroll{display:flex;gap:14px;overflow-x:auto;padding:0 20px 8px;scroll-behavior:smooth}.course-perf-scroll::-webkit-scrollbar{height:4px}.course-perf-scroll::-webkit-scrollbar-track{background:var(--border-light);border-radius:4px}.course-perf-scroll::-webkit-scrollbar-thumb{background:var(--text-faint);border-radius:4px}.course-perf-item{min-width:220px;background:var(--card-hover);border-radius:var(--radius-md);padding:16px;flex-shrink:0}.course-perf-name{font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.course-perf-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-bottom:10px;text-align:center}.course-perf-stat-label{font-size:12px;color:var(--text-muted)}.course-perf-stat-val{font-size:15px;font-weight:600}.course-perf-stat-sub{font-size:13px}.course-perf-diff{display:flex;gap:6px}.course-perf-diff-box{flex:1 1;background:#fff;border-radius:var(--radius-sm);padding:4px 0;text-align:center;border:1px solid var(--border-light)}.course-perf-diff-val{font-size:13px;font-weight:600}.course-perf-diff-label{font-size:12px;color:var(--text-faint)}.course-perf-total{margin-top:8px;text-align:center;font-size:13px;font-weight:600;color:#44484f}.heatmap-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.heatmap-legend{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.heatmap-legend-cell{width:11px;height:11px;border-radius:2px}.heatmap-grid{overflow-x:auto;padding-bottom:4px}.heatmap-grid-inner{display:flex;gap:10px;min-width:-moz-fit-content;min-width:fit-content}.heatmap-week{display:flex;flex-direction:column;gap:3px}.heatmap-cell{width:11px;height:11px;border-radius:2px;cursor:pointer;transition:transform .1s}.heatmap-cell:hover{transform:scale(1.3)}.heatmap-empty{width:11px;height:11px}.course-card{position:relative;overflow:hidden}.course-card-accent{position:absolute;top:0;left:0;right:0;height:3px}.course-card-header{display:flex;align-items:center;gap:12px;margin-bottom:14px}.course-card-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600}.course-card-name{font-size:14px;font-weight:600;color:var(--text-primary)}.course-card-modules,.course-card-progress-text{font-size:13px;color:var(--text-muted)}.course-card-progress-text{margin-top:6px;margin-bottom:14px}.course-card-buttons{display:flex;gap:8px}.btn-outline{flex:1 1;padding:9px 0;border-radius:var(--radius-sm);background:transparent;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.btn-outline:hover{opacity:.8}.btn-solid{flex:1 1;padding:9px 0;border-radius:var(--radius-sm);border:none;color:#fff;font-size:12px;font-weight:600;cursor:pointer;transition:all .2s}.btn-solid:hover{opacity:.9;transform:translateY(-1px)}.progress-bar-card{width:100%;border-radius:6px;background:var(--border-light);overflow:hidden}.progress-bar-fill{height:100%;border-radius:6px;transition:width .8s ease}.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:13px;font-weight:600;white-space:nowrap}.tab-bar{display:flex;gap:6px;margin-bottom:24px;background:var(--card-hover);border-radius:10px;padding:4px}.tab-pill{padding:8px 20px;border-radius:var(--radius-sm);border:none;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;background:transparent;color:var(--text-muted)}.tab-pill.active{background:var(--accent-blue);color:#fff;box-shadow:0 2px 12px rgba(59,130,246,.3)}.tab-pill:not(.active):hover{background:#e2e8f0;color:var(--text-primary)}.report-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}.report-back-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--text-primary);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center}.report-back-btn:hover{background:var(--card-hover)}.report-title{font-size:18px;font-weight:500;color:var(--text-primary)}.report-subtitle{font-size:12px;color:var(--text-muted)}.stat-card{text-align:center}.stat-card-label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.stat-card-value{font-size:28px;font-weight:700}.stat-card-sub{font-size:12px;color:var(--text-secondary);margin-top:2px}.benchmark-legend{background:#eff6ff;border-radius:var(--radius-md);padding:12px 18px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;border:1px solid #bfdbfe}.benchmark-label{font-size:12px;font-weight:700;color:var(--accent-blue)}.benchmark-item{font-size:13px;font-weight:500;display:flex;align-items:center;gap:4px}.benchmark-dot{width:8px;height:8px;border-radius:2px}.data-table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{color:var(--text-muted);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.3px;border-bottom:2px solid var(--border);white-space:nowrap;background:var(--card-hover)}.data-table td,.data-table th{padding:10px 6px;text-align:center}.data-table td{border-bottom:1px solid var(--border-light)}.data-table tbody tr{cursor:pointer;transition:background .15s}.data-table tbody tr:hover{background:#f0f7ff}.td-name{padding-left:12px!important;text-align:left!important;font-weight:500;color:var(--text-primary);white-space:nowrap}.td-faded{color:var(--text-secondary);font-size:13px}.td-bold{font-weight:700;font-size:13px}.module-selector{display:flex;gap:6px;flex-wrap:wrap}.module-btn{padding:6px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s;background:var(--card-hover);border:1px solid var(--border);color:var(--text-secondary)}.module-btn.active{border-color:currentColor}.module-header{margin-bottom:20px}.module-title{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.module-subtitle{font-size:12px;color:var(--text-muted);margin-bottom:16px}.ring-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:12px;gap:12px}.ring-item{text-align:center}.ring-label{font-size:12px;font-weight:700;color:var(--text-primary);margin-top:6px}.ring-sub{font-size:12px;color:var(--text-muted)}.content-list-card{overflow:hidden;padding:0!important}.content-list-header{padding:12px 18px;border-bottom:1px solid var(--border-light);font-size:13px;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:8px}.content-list-header-bar{width:4px;height:16px;border-radius:2px}.content-list-count{margin-left:auto;font-size:13px;font-weight:500}.content-item{gap:10px;padding:10px 18px;border-bottom:1px solid var(--border-light)}.content-icon,.content-item{display:flex;align-items:center}.content-icon{width:22px;height:22px;border-radius:6px;justify-content:center;font-size:13px;flex-shrink:0}.content-title{font-size:12px;color:var(--text-primary);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-meta{font-size:12px;color:var(--text-faint)}.readiness-panel{overflow:hidden;padding:0!important}.readiness-header{padding:14px 20px;background:#eff6ff;border-bottom:1px solid #bfdbfe;font-size:14px;font-weight:700;color:var(--accent-blue)}.readiness-body{padding:20px}.readiness-card{background:var(--card-hover);border-radius:var(--radius-md);padding:16px;text-align:center}.readiness-card-label{font-size:13px;color:var(--text-muted);margin-bottom:6px}.readiness-card-value{font-size:20px;font-weight:800;margin-bottom:4px}.readiness-card-sub{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.readiness-verdict{border-radius:10px;padding:14px}.readiness-verdict-title{font-size:13px;font-weight:700;margin-bottom:4px}.readiness-verdict-text{font-size:12px;color:var(--text-secondary);line-height:1.5}.tracker-card{text-align:center}.tracker-from{font-size:16px;font-weight:700;text-decoration:line-through;opacity:.5}.tracker-arrow{font-size:14px;color:var(--text-faint);margin:0 8px}.tracker-to{font-size:20px;font-weight:800}.tracker-target{font-size:12px;color:var(--text-faint)}.bar-chart-row{margin-bottom:16px}.bar-chart-header{display:flex;justify-content:space-between;margin-bottom:6px}.bar-chart-label{font-size:12px;font-weight:500;color:var(--text-secondary)}.bar-chart-target{font-size:13px;color:var(--text-muted)}.bar-chart-bars{display:flex;gap:4px;align-items:end;height:32px}.bar-chart-col{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:2px}.bar-chart-bar{width:100%;border-radius:4px;min-height:4px}.bar-chart-week{font-size:8px;color:var(--text-faint)}.ring-track{fill:none;stroke:var(--border-light)}.ring-fill{fill:none;stroke-linecap:round;transition:stroke-dashoffset 1s}.ring-text{font-weight:700;fill:var(--text-primary)}.course-view-btn:hover{background-color:#008738;color:#fff!important}@media (max-width:1024px){.portal-content{padding:18px 16px}.grid-4{grid-template-columns:repeat(2,1fr)}.ring-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.grid-2,.grid-3,.grid-4,.grid-5{grid-template-columns:1fr}.navbar{padding:10px 16px;flex-wrap:wrap;gap:10px}.navbar-back{margin-left:0}.card{padding:16px}.grand-total-header{flex-direction:column;align-items:flex-start;gap:8px}.grand-total-number{font-size:28px}.grand-total-breakdown{flex-direction:row}.grand-total-sources{flex-direction:column;gap:6px}.platform-header{flex-wrap:wrap}.platform-total{margin-left:0}.course-perf-item{min-width:180px}.heatmap-grid{overflow-x:auto}.ring-grid{grid-template-columns:repeat(2,1fr)}.data-table{font-size:13px}.data-table td,.data-table th{padding:6px 4px}.course-card-buttons{flex-direction:column}.btn-outline,.btn-solid{width:100%}.tab-bar{flex-wrap:wrap}.tab-pill{flex:1 1 100%;text-align:center}}@media (max-width:480px){.portal-content{padding:14px 10px}.grand-total-number{font-size:24px}.platform-total-num{font-size:18px}.course-card-name{font-size:13px}.stat-card-value{font-size:22px}.ring-grid{grid-template-columns:1fr}.heatmap-header{flex-wrap:wrap}}.grid-3{display:grid;grid-gap:16px;gap:16px}@media (max-width:768px){.grid-2,.grid-4,.grid-5{grid-template-columns:1fr}}a:active,a:focus,a:hover{text-decoration:none;outline:none;color:#fff}.course-perf-scroll{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:20px;gap:20px}@media (max-width:1200px){.course-perf-scroll{grid-template-columns:repeat(3,1fr)}}@media (max-width:992px){.course-perf-scroll{grid-template-columns:repeat(2,1fr)}}@media (max-width:576px){.course-perf-scroll{grid-template-columns:1fr}}