@font-face{font-family:Junegull;src:url(/fonts/Junegull-Regular.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Junegull;src:url(/fonts/Junegull-ExtraBold.otf)format("opentype");font-weight:800;font-style:normal;font-display:swap}:root{--md-primary:#fb923c;--md-primary-container:#fdba74;--md-on-primary:#fff;--md-on-primary-container:#1c1917;--md-secondary:#172554;--md-secondary-container:#1e3a5f;--md-on-secondary:#fff;--md-on-secondary-container:#fff;--md-surface:#0c1222;--md-surface-variant:#172554;--md-surface-container:#0a0f1a;--md-surface-container-low:#0e1626;--md-on-surface:#e5e7eb;--md-on-surface-variant:#9ca3af;--md-outline:#374151;--md-outline-variant:#1f2937;--md-error:#f87171;--md-error-container:#991b1b;--md-success:#4ade80;--md-success-container:#166534;--md-accent:#fb923c;--md-highlight:#f97316;--md-elevation-1:0 1px 3px #0006, 0 1px 2px #0000004d;--md-elevation-2:0 3px 6px #0006, 0 2px 4px #0000004d;--md-elevation-3:0 6px 12px #00000080, 0 4px 8px #0000004d;--md-shape-sm:8px;--md-shape-md:12px;--md-shape-lg:16px;--md-shape-xl:28px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--md-surface-container);color:var(--md-on-surface);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;min-height:100vh;font-family:Varela Round,sans-serif}.md-btn{border-radius:var(--md-shape-xl);letter-spacing:.1px;cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:10px 24px;font-family:Varela Round,sans-serif;font-size:14px;font-weight:500;text-decoration:none;transition:all .2s cubic-bezier(.2,0,0,1);display:inline-flex}.md-btn-filled{background:var(--md-primary);color:var(--md-on-primary)}.md-btn-filled:hover{box-shadow:var(--md-elevation-1);filter:brightness(1.08)}.md-btn-filled-secondary{background:var(--md-secondary);color:var(--md-on-secondary)}.md-btn-filled-secondary:hover{box-shadow:var(--md-elevation-1);filter:brightness(1.12)}.md-btn-tonal{background:var(--md-primary-container);color:var(--md-on-primary-container)}.md-btn-tonal:hover{box-shadow:var(--md-elevation-1);background:#fb923c26}.md-btn-outlined{color:var(--md-primary);border:1px solid var(--md-outline);background:0 0}.md-btn-outlined:hover{background:#fb923c1f}.md-btn:disabled{opacity:.5;cursor:not-allowed}.md-field{width:100%;position:relative}.md-field label{color:var(--md-on-surface-variant);pointer-events:none;background:var(--md-surface);padding:0 4px;font-size:16px;transition:all .2s cubic-bezier(.2,0,0,1);position:absolute;top:16px;left:16px}.md-field input{border:1px solid var(--md-outline);border-radius:var(--md-shape-sm);width:100%;color:var(--md-on-surface);background:var(--md-surface);outline:none;padding:20px 16px 8px;font-family:Varela Round,sans-serif;font-size:16px;transition:border-color .2s}.md-field input:focus{border-color:var(--md-primary);border-width:2px}.md-field input:focus+label,.md-field input:not(:placeholder-shown)+label{color:var(--md-primary);font-size:12px;top:-8px;left:12px}.md-card{background:var(--md-surface);border-radius:var(--md-shape-lg);box-shadow:var(--md-elevation-1);padding:24px}.md-card-elevated{box-shadow:var(--md-elevation-2)}.md-top-app-bar{background:var(--md-primary);color:var(--md-on-primary);box-shadow:var(--md-elevation-2);align-items:center;gap:8px;min-height:64px;padding:16px 24px;display:flex}.md-top-app-bar h1{flex:1;font-size:22px;font-weight:400}.md-table-container{border-radius:var(--md-shape-md);border:1px solid var(--md-outline-variant);width:100%;overflow-x:auto}.md-table{border-collapse:collapse;width:100%;font-size:14px}.md-table th{background:var(--md-secondary);color:var(--md-on-secondary);text-align:left;white-space:nowrap;padding:14px 16px;font-weight:500}.md-table td{border-bottom:1px solid var(--md-outline-variant);padding:12px 16px}.md-table tr:last-child td{border-bottom:none}.md-table tr:hover td{background:var(--md-surface-variant)}.md-table .term-header{background:var(--md-primary);color:var(--md-on-primary);text-align:center;text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:500}.md-chip{border-radius:8px;align-items:center;gap:6px;padding:6px 16px;font-size:13px;font-weight:500;display:inline-flex}.md-chip-pass{color:#4caf50;background:#2e7d3233;border:1px solid #2e7d324d}.md-chip-fail{color:#ef5350;background:#d32f2f33;border:1px solid #d32f2f4d}.md-upload-zone{border:2px dashed var(--md-outline);border-radius:var(--md-shape-lg);text-align:center;cursor:pointer;background:var(--md-surface);padding:32px;transition:all .2s}.md-upload-zone:hover{border-color:var(--md-primary);background:var(--md-surface-variant)}.md-snackbar{background:var(--md-surface-variant);color:#fff;border-radius:var(--md-shape-sm);box-shadow:var(--md-elevation-3);z-index:1000;padding:14px 24px;font-size:14px;animation:.3s snackIn;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.md-snackbar.error{background:var(--md-error)}@keyframes snackIn{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.md-tabs{border-bottom:1px solid var(--md-outline-variant);margin-bottom:24px;display:flex}.md-tab{color:var(--md-on-surface-variant);cursor:pointer;background:0 0;border:none;flex:1;padding:14px 16px;font-family:Varela Round,sans-serif;font-size:14px;font-weight:500;transition:color .2s;position:relative}.md-tab.active{color:var(--md-primary);font-weight:600}.md-tab.active:after{content:"";background:var(--md-primary);border-radius:4px 4px 0 0;height:4px;position:absolute;bottom:0;left:16px;right:16px}.md-divider{background:var(--md-outline-variant);height:1px;margin:16px 0}.md-badge{background:var(--md-primary-container);color:var(--md-on-primary-container);border-radius:100px;align-items:center;padding:2px 10px;font-size:12px;font-weight:500;display:inline-flex}.page-container{max-width:1100px;margin:0 auto;padding:24px}.page-container>.md-card{margin-bottom:24px}.flex-between{justify-content:space-between;align-items:center;gap:16px;display:flex}.flex-col{flex-direction:column;gap:16px;display:flex}.grade-pass{color:var(--md-success)}.grade-fail{color:var(--md-error)}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-4px)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes pulse{0%{transform:translate(-50%,-50%)scale(1)}to{transform:translate(-50%,-50%)scale(1.05)}}@keyframes confettiFall{0%{opacity:1;transform:translateY(-20px)rotate(0)}to{opacity:0;transform:translateY(80px)rotate(360deg)}}.confetti{border-radius:2px;width:8px;height:8px;animation:linear infinite confettiFall;position:absolute;top:-10px}@media (width<=600px){.page-container,.md-card{padding:16px}.md-table{font-size:12px}.md-table th,.md-table td{white-space:nowrap;padding:8px 6px}.status-gif{height:30px!important}.md-top-app-bar{min-height:56px;padding:12px 16px}.md-top-app-bar h1{font-size:18px!important}.md-tabs{overflow-x:auto}.md-tab{min-width:0;padding:10px 8px;font-size:12px}}@media (width<=480px){.md-table-container{-webkit-overflow-scrolling:touch;overflow-x:auto}.md-table{min-width:600px}}.status-gif{object-fit:contain;border-radius:8px;height:50px}.grade-progress-bar{background:var(--md-outline-variant);border-radius:4px;width:100%;height:8px;margin-top:4px;overflow:hidden}.grade-progress-fill{border-radius:4px;height:100%;transition:width .6s cubic-bezier(.2,0,0,1)}.grade-progress-fill.high{background:var(--md-success)}.grade-progress-fill.mid{background:var(--md-accent)}.grade-progress-fill.low{background:var(--md-error)}.score-pill{background:var(--md-surface-variant);border:1px solid var(--md-outline-variant);border-radius:100px;align-items:center;gap:6px;padding:4px 12px;font-size:13px;font-weight:600;display:inline-flex}.score-pill.high{color:var(--md-success);border-color:#81c7844d}.score-pill.mid{color:var(--md-accent);border-color:#ff8e014d}.score-pill.low{color:var(--md-error);border-color:#f28b824d}.grade-summary-card{background:var(--md-surface);border-radius:var(--md-shape-lg);flex-direction:column;gap:16px;padding:20px;display:flex}.grade-row{border-radius:var(--md-shape-sm);justify-content:space-between;align-items:center;padding:12px 16px;transition:background .15s;display:flex}.grade-row:hover{background:var(--md-surface-variant)}.grade-row-label{color:var(--md-on-surface-variant);min-width:100px;font-size:14px}.grade-row-value{flex:1;justify-content:flex-end;align-items:center;gap:10px;display:flex}.grade-row-bar{flex:1;max-width:160px}.exam-score-ring{width:80px;height:80px;position:relative}.exam-score-ring svg{transform:rotate(-90deg)}.exam-score-ring-label{color:var(--md-on-surface);flex-direction:column;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex;position:absolute;inset:0}.exam-score-ring-label small{color:var(--md-on-surface-variant);font-size:10px;font-weight:400}.term-grade-hero{text-align:center;background:linear-gradient(135deg, var(--md-surface-variant), var(--md-surface));border-radius:var(--md-shape-lg);border:1px solid var(--md-outline-variant);padding:20px}.term-grade-hero-value{letter-spacing:1px;font-family:Junegull,sans-serif;font-size:42px;font-weight:700}.term-grade-hero-label{color:var(--md-on-surface-variant);margin-top:4px;font-size:13px}.rank-badge{border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:inline-flex}.rank-badge.gold{color:#000;background:linear-gradient(135deg,gold,#ffa000)}.rank-badge.silver{color:#000;background:linear-gradient(135deg,silver,#9e9e9e)}.rank-badge.bronze{color:#fff;background:linear-gradient(135deg,#cd7f32,sienna)}.rank-badge.normal{background:var(--md-outline-variant);color:var(--md-on-surface-variant)}
