:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#0f172a;color:#e5e7eb;display:block;min-height:100vh}#root{width:100%;max-width:none;margin:0;padding:0}.page{min-height:100vh;display:flex;flex-direction:column}.header{background:#020617;border-bottom:1px solid #1e293b}.header-sky{background:linear-gradient(180deg,#1d4ed8,#38bdf8 60%,#0f172a);border-bottom:1px solid #0ea5e9}.header-inner{width:100%;max-width:none;margin:0;padding:20px 24px 10px}.hero{padding:12px 0 8px}.hero-centered{text-align:center;max-width:900px;margin:0 auto}.hero-kicker{margin:0;font-weight:600;color:#e0f2fe;letter-spacing:.3px;font-size:18px}.header-top{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.title{margin:6px 0 12px;font-size:46px;font-weight:800;letter-spacing:.5px}.main{flex:1;max-width:1200px;margin:0 auto;padding:24px 20px}.home-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start;justify-items:stretch}.announcements{grid-column:1;grid-row:1 / span 2}.photo-rail{grid-column:2;grid-row:1}.top-discussion-block{grid-column:2;grid-row:2}.nav{display:flex;gap:20px;flex-wrap:wrap}.nav-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.nav-login{margin-left:auto;display:inline-flex;align-items:center;gap:6px}.nav-user-actions{margin-left:auto;display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap}.nav-icon svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.nav-link{color:#c7d2fe;text-decoration:none;padding:8px 16px;border-radius:999px;border:1px solid transparent;font-size:16px;display:inline-flex;align-items:center;transition:transform .2s ease,background .2s ease,border-color .2s ease,box-shadow .2s ease;transform-origin:center}.nav-link:hover{background:#6366f126;border-color:#6366f1;transform:scale(1.25);box-shadow:0 10px 24px #1e40af40}.nav-link-cta{background:#6366f1;color:#fff}.nav-logout{background:#94a3b82e;border:1px solid #64748b;color:#e2e8f0;cursor:pointer}.nav-active{background:#6366f140;border-color:#6366f1}.nav a[href="/codes"]{border:1px solid transparent;color:#fbbf24}.nav a[href="/codes"]:hover{border-color:#f59e0b;background:#f59e0b1f;color:#fcd34d}.nav a[href="/codes"].nav-active{border-color:#f59e0b;color:#fcd34d;background:#f59e0b1f}.search-section{margin-top:24px;margin-bottom:32px;display:flex;justify-content:center}.search{display:flex;align-items:center;gap:12px;background:#020617;border:1px solid #1e293b;border-radius:999px;padding:14px 18px;width:min(900px,100%)}.search-icon-btn,.search-voice-btn{background:transparent;border:none;color:#e0e7ff;cursor:pointer;padding:4px 6px;border-radius:999px}.voice-wrap{display:inline-flex;align-items:center;gap:8px}.voice-waves{width:26px;height:12px;border-radius:999px;background:repeating-linear-gradient(90deg,#93c5fd00 0px 4px,#93c5fde6 4px 7px);animation:voice-wave .9s linear infinite}@keyframes voice-wave{0%{background-position:0 0}to{background-position:14px 0}}.search-icon-btn svg,.search-voice-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}.search-voice-btn.is-listening{background:#3b82f640;color:#93c5fd}.search-icon-btn:hover,.search-voice-btn:hover{background:#94a3b833}.search-input{flex:1;background:transparent;border:none;outline:none;color:#fff;font-size:16px}.search-input::placeholder{color:#cbd5f5}.announcements{margin-top:8px;text-align:left;justify-self:start}.announcements-list{padding-left:0;list-style:none;display:flex;flex-direction:column;gap:10px}.announcement-item{margin-bottom:0;padding:12px 14px;border:1px solid #1e293b;border-radius:10px;background:#0206178c}.announcement-title-link{color:#bfdbfe;font-weight:700;text-decoration:none;font-size:17px;line-height:1.35}.announcement-title-link:hover{text-decoration:underline;color:#dbeafe}.announcement-summary{margin:8px 0 0;color:#cbd5e1;font-size:15px;line-height:1.45}.announcement-date{margin:8px 0 0;color:#93c5fd;font-size:14px;font-weight:600}.announcement-meta{margin:0 0 10px;color:#cbd5e1;font-size:14px}.announcement-meta-error{color:#fbbf24}.section-title{margin:0 0 14px;font-size:24px}.photo-rail{display:flex;flex-direction:column;gap:10px;margin-top:44px}.photo-frame{border-radius:18px;overflow:hidden;border:1px solid #1e293b;background:#0b1120;aspect-ratio:16 / 10;min-height:280px;position:relative}.photo-slide{width:100%;height:100%}.photo-img{width:100%;height:100%;object-fit:cover;display:block}.photo-arrow{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:50%;border:none;background:#0f172a99;color:#e2e8f0;font-size:22px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .2s ease}.photo-arrow.left{left:10px}.photo-arrow.right{right:10px}.photo-arrow:hover{background:#1e293bcc}.photo-frame:hover .photo-arrow{opacity:1;pointer-events:auto}.photo-slide.slide-next{animation:photo-slide-next .6s ease}.photo-slide.slide-prev{animation:photo-slide-prev .6s ease}@keyframes photo-slide-next{0%{opacity:.2;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes photo-slide-prev{0%{opacity:.2;transform:translate(-18px)}to{opacity:1;transform:translate(0)}}.photo-dots{display:flex;justify-content:center;gap:8px}.photo-dot{width:8px;height:8px;border-radius:50%;background:#94a3b880}.photo-dot.is-active{background:#93c5fd}.top-discussion-block{margin-top:6px;text-align:left}.announcement-title-text{margin:0;color:#bfdbfe;font-weight:700;font-size:17px;line-height:1.35}.course-search-wrap{margin-top:18px;margin-bottom:12px;display:flex;justify-content:center}.course-search{width:min(900px,100%);display:flex;gap:10px}.course-search-input{flex:1;background:#020617;border:1px solid #1e293b;border-radius:10px;color:#f8fafc;padding:11px 12px;font-size:15px}.course-search-input:focus{outline:none;border-color:#60a5fa;box-shadow:0 0 0 3px #3b82f633}.course-filter-wrap{display:flex;justify-content:center;margin-bottom:26px}.course-filter-bar{width:min(900px,100%);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.course-filter-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#dbeafe}.course-filter-select{background:#020617;border:1px solid #1e293b;border-radius:10px;color:#f8fafc;padding:10px 12px;font-size:14px}.course-filter-select:focus{outline:none;border-color:#60a5fa;box-shadow:0 0 0 3px #3b82f633}.course-grid{display:grid;grid-template-columns:repeat(2,430px);gap:18px;grid-auto-rows:220px;width:100%;justify-content:center;justify-items:center;align-items:stretch}.course-card{background:#020617;border:1px solid #1e293b;border-radius:14px;padding:14px;height:220px;display:flex;flex-direction:column;gap:8px;width:430px}.course-code{margin:0;font-size:22px;font-weight:800;color:#bfdbfe}.course-name{margin:0;font-size:15px;color:#e2e8f0;line-height:1.45}.course-score-row{display:flex;align-items:center;gap:6px}.course-score-label{font-size:13px;color:#bfdbfe;min-width:95px}.course-stars{display:inline-flex;align-items:center;gap:2px}.star{font-size:15px;color:#94a3b880}.star-on{color:#facc15}.course-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto}.course-pill{font-size:13px;background:#3b82f626;border:1px solid rgba(59,130,246,.45);color:#bfdbfe;border-radius:999px;padding:5px 10px}.course-pagination{margin-top:18px;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}.course-page-status{color:#cbd5e1;font-size:14px}.course-page-jumps{display:inline-flex;align-items:center;gap:8px}.course-page-btn{min-width:36px;height:34px;border-radius:8px;border:1px solid #334155;background:#0f172acc;color:#e2e8f0;cursor:pointer;font-size:14px}.course-page-btn:hover{border-color:#60a5fa;color:#bfdbfe}.course-page-btn.is-active{border-color:#3b82f6;background:#3b82f633;color:#bfdbfe;cursor:default}.course-page-btn:disabled{opacity:.9}.course-page-ellipsis{color:#94a3b8;font-size:16px;padding:0 2px}@media(max-width:900px){.header-inner{padding:18px 16px 10px}.nav-bar{width:100%;justify-content:space-between}.nav{gap:8px}.search{width:100%}.home-content{display:flex;flex-direction:column}.photo-rail{margin-top:0;order:1;width:100%}.announcements{order:2}.top-discussion-block{order:3;margin-top:0}.photo-frame{min-height:220px}.photo-arrow{opacity:1;pointer-events:auto}.course-grid{grid-template-columns:minmax(0,1fr);justify-content:stretch;justify-items:stretch;grid-auto-rows:auto}.course-card{width:100%;height:auto;min-height:200px}.course-filter-bar{grid-template-columns:1fr}.course-pagination{gap:10px}.course-page-jumps{width:100%;justify-content:center;flex-wrap:wrap}}@media(max-width:600px){.main{padding:18px 14px}.title{font-size:34px;line-height:1.2}.hero-kicker{font-size:16px}.nav-bar{flex-direction:column;align-items:stretch;gap:10px}.nav{width:100%;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px 6px;align-items:center}.nav>.nav-link{justify-content:center;width:100%}.nav>.nav-link:nth-child(1){grid-column:1 / span 2}.nav>.nav-link:nth-child(2){grid-column:3 / span 2}.nav>.nav-link:nth-child(3){grid-column:5 / span 2}.nav>.nav-link:nth-child(4){grid-column:2 / span 2}.nav>.nav-link:nth-child(5){grid-column:4 / span 2}.nav-login,.nav-user-actions{margin-left:0;align-self:flex-end}.nav-link{font-size:14px;padding:7px 12px}.nav-link:hover{transform:none}.search{padding:8px 12px;gap:8px}.section-title{font-size:21px;margin-bottom:12px}.announcement-item{padding:10px 11px}.announcement-title-link,.announcement-title-text{font-size:15px}.announcement-date{font-size:13px}.announcement-summary{font-size:14px}.photo-frame{min-height:190px}.course-pagination{flex-direction:column;align-items:stretch}.course-page-status{text-align:center}}.auth-page{min-height:calc(100vh - 140px);display:flex;align-items:center;justify-content:center;padding:32px 20px 48px}.auth-card{width:min(520px,100%);background:#0b1120;border:1px solid #1e293b;border-radius:18px;padding:28px;box-shadow:0 20px 50px #0f172a59}.auth-title{margin:0 0 6px;font-size:28px}.auth-subtitle{margin:0 0 20px;color:#cbd5f5}.auth-form{display:flex;flex-direction:column;gap:14px}.auth-label{display:flex;flex-direction:column;gap:8px;font-size:14px;color:#e2e8f0}.auth-input{background:#0f172a;border:1px solid #1e293b;border-radius:10px;padding:10px 12px;color:#f8fafc;font-size:15px}.auth-input-wrap{position:relative;display:flex;align-items:center}.auth-input-with-icon{padding-right:42px}.auth-eye-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:1px solid transparent;background:#0f172a80;color:#94a3b8;cursor:pointer;width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0}.auth-eye-btn:hover{border-color:#334155;color:#93c5fd;background:#1e293bbf}.auth-eye-icon{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.auth-input.error{border-color:#ef4444;box-shadow:0 0 0 3px #ef444426}.auth-error{color:#fca5a5;font-size:12px}.auth-input:focus{outline:none;border-color:#60a5fa;box-shadow:0 0 0 3px #3b82f640}.auth-row{display:flex;gap:12px;align-items:flex-end}.auth-turnstile{display:flex;flex-direction:column;gap:8px}.auth-hint{margin:0;font-size:12px;color:#94a3b8}.auth-grow{flex:1}.auth-btn{border:none;border-radius:10px;padding:10px 14px;font-weight:600;cursor:pointer}.auth-btn-primary{background:#3b82f6;color:#fff}.auth-btn-primary:hover{background:#2563eb}.auth-btn-ghost{background:#3b82f626;color:#bfdbfe;border:1px solid rgba(59,130,246,.35)}.auth-btn-ghost:disabled{opacity:.5;cursor:not-allowed}.auth-footer{margin-top:18px;display:flex;gap:8px;align-items:center;color:#cbd5f5;font-size:14px}.auth-footer-stack{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.auth-footer-line{display:flex;align-items:center;gap:8px}.auth-link{background:none;border:none;color:#93c5fd;cursor:pointer;font-weight:600;padding:0}@media(max-width:600px){.auth-card{padding:22px}.auth-row{flex-direction:column;align-items:stretch}}.grid{display:grid;grid-template-columns:1fr;gap:16px}@media(min-width:900px){.grid{grid-template-columns:repeat(3,1fr)}}.card{background:#020617;border:1px solid #1e293b;border-radius:14px;padding:16px;display:flex;flex-direction:column}.card-title{margin:0;font-size:18px;font-weight:700}.card-subtitle{margin-top:4px;margin-bottom:12px;font-size:13px;color:#9ca3af}.card-body{display:flex;flex-direction:column;gap:12px}.list{padding-left:18px;margin:0}.list-item{margin-bottom:6px}.btn{margin-top:auto;background:transparent;color:#c7d2fe;border:1px solid #6366f1;padding:8px 12px;border-radius:8px;cursor:pointer;font-weight:600}.btn:hover{background:#6366f126}.btn-ghost{border-color:#475569;color:#cbd5f5}.row{display:flex;gap:10px}.muted{color:#9ca3af}.comment{border:1px solid #1e293b;border-radius:10px;padding:10px}.comment-top{display:flex;justify-content:space-between;align-items:center}.comment-text{margin-top:6px;font-size:14px;color:#cbd5f5}.pill{font-size:12px;background:#6366f133;border:1px solid #6366f1;padding:2px 8px;border-radius:999px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace}.footer{border-top:1px solid #1e293b;background:#020617}.footer-inner{max-width:1100px;margin:0 auto;padding:12px 20px}
