*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--green:#16a34a;--green-light:#dcfce7;--red:#dc2626;--red-light:#fee2e2;--amber:#d97706;--amber-light:#fef3c7;--gray-900:#111827;--gray-700:#374151;--gray-500:#6b7280;--gray-200:#e5e7eb;--gray-100:#f3f4f6;--white:#fff;--radius:12px;--shadow:0 4px 6px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a}body{background:var(--gray-100);color:var(--gray-900);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6}.navbar{background:var(--white);border-bottom:1px solid var(--gray-200);z-index:100;height:64px;box-shadow:var(--shadow);justify-content:space-between;align-items:center;padding:0 2rem;display:flex;position:sticky;top:0}.navbar-brand{color:var(--green);white-space:nowrap;align-items:center;gap:8px;font-size:1.25rem;font-weight:700;text-decoration:none;display:flex}.navbar-link{color:var(--gray-700);border-radius:8px;padding:6px 12px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .2s}.navbar-link:hover{background:var(--gray-100)}.navbar-desktop-links{align-items:center;gap:1.5rem;display:flex}.navbar-desktop-user{align-items:center;gap:1rem;display:flex}.navbar-logout-btn{border:1px solid var(--gray-200);cursor:pointer;color:var(--gray-500);background:0 0;border-radius:8px;padding:6px 14px;font-size:.875rem;font-weight:500;transition:all .2s}.navbar-logout-btn:hover{background:var(--red-light);color:var(--red);border-color:#fca5a5}.navbar-hamburger{border:1px solid var(--gray-200);cursor:pointer;color:var(--gray-700);background:0 0;border-radius:8px;padding:6px 10px;font-size:1.1rem;line-height:1;display:none}.navbar-mobile-menu{display:none}.navbar-links{align-items:center;gap:1rem;display:flex}.navbar-links a{color:var(--gray-700);border-radius:8px;padding:6px 12px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .2s}.navbar-links a:hover{background:var(--gray-100)}@media (width<=640px){.navbar{padding:0 1rem}.navbar-desktop-links,.navbar-desktop-user{display:none}.navbar-hamburger{justify-content:center;align-items:center;display:flex}.navbar-mobile-menu{background:var(--white);border-bottom:1px solid var(--gray-200);box-shadow:var(--shadow);z-index:99;flex-direction:column;padding:.5rem 0;display:flex;position:sticky;top:64px}.navbar-mobile-link{color:var(--gray-700);padding:12px 20px;font-size:.95rem;font-weight:500;text-decoration:none;transition:background .15s;display:block}.navbar-mobile-link:hover{background:var(--gray-100)}.navbar-mobile-cta{color:var(--green);font-weight:600}.navbar-mobile-divider{border-top:1px solid var(--gray-200);margin:4px 0}.navbar-mobile-logout{text-align:left;width:100%;color:var(--red);cursor:pointer;background:0 0;border:none;padding:12px 20px;font-size:.95rem;font-weight:500;transition:background .15s}.navbar-mobile-logout:hover{background:var(--red-light)}}.btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:8px;padding:10px 20px;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-primary{background:var(--green);color:#fff}.btn-primary:hover{background:#15803d}.btn-danger{background:var(--red);color:#fff}.btn-outline{border:1px solid var(--gray-200);color:var(--gray-700);background:0 0}.btn-outline:hover{background:var(--gray-100)}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem}.grade-badge{border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;font-size:2rem;font-weight:700;display:inline-flex}.grade-A{background:var(--green-light);color:var(--green)}.grade-B{background:var(--amber-light);color:var(--amber)}.grade-C{background:var(--red-light);color:var(--red)}.form-group{margin-bottom:1rem}.form-label{color:var(--gray-700);margin-bottom:4px;font-size:.875rem;font-weight:500;display:block}.form-input{border:1px solid var(--gray-200);border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:.9rem;transition:border .2s}.form-input:focus{border-color:var(--green)}.page{max-width:1200px;margin:0 auto;padding:2rem}.alert{border-radius:8px;margin-bottom:1rem;padding:12px 16px;font-size:.9rem}.alert-error{background:var(--red-light);color:var(--red)}.alert-success{background:var(--green-light);color:var(--green)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-12px)}}
