.app{min-height:100vh;background:var(--bg);transition:background .4s ease}.header{background:linear-gradient(145deg,#0a4f4a,#0d6e66 40%,#0e7490);padding:40px 24px 44px;position:relative;overflow:hidden}[data-theme=dark] .header{background:linear-gradient(145deg,#010e0d,#021a19 45%,#071e2e)}.header:before{content:"";position:absolute;width:500px;height:500px;border-radius:50%;background:radial-gradient(circle,rgba(45,212,191,.12) 0%,transparent 70%);top:-180px;right:-120px;pointer-events:none}.header:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:32px 32px;pointer-events:none}.header-inner{max-width:660px;margin:0 auto;position:relative;z-index:1}.header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.header-left{display:flex;flex-direction:column}.header-right{display:flex;flex-direction:column;align-items:flex-end;gap:14px;flex-shrink:0}.header-icon{font-size:32px;line-height:1;filter:drop-shadow(0 2px 12px rgba(0,0,0,.3))}.univ-tag{display:inline-flex;align-items:center;gap:6px;background:#ffffff12;color:#a7f3d0e6;font-size:9.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:4px 12px;border-radius:99px;margin-bottom:12px;border:1px solid rgba(255,255,255,.1);width:fit-content;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.univ-tag:before{content:"";display:block;width:5px;height:5px;border-radius:50%;background:#34d399;box-shadow:0 0 6px #34d399;flex-shrink:0}.header h1{font-size:28px;font-weight:800;color:#fff;letter-spacing:-.04em;line-height:1.1;text-shadow:0 2px 20px rgba(0,0,0,.2)}.s2-tag{display:inline-block;background:linear-gradient(135deg,#ffffff40,#ffffff1a);padding:2px 10px;border-radius:8px;font-size:22px;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.header-sub{color:#ffffff73;font-size:13px;font-weight:400;margin-top:10px;line-height:1.5;max-width:360px}.header-progress-track{position:absolute;bottom:0;left:0;right:0;height:2px;background:#ffffff12}.header-progress-fill{height:100%;background:linear-gradient(90deg,#2dd4bf,#38bdf8);border-radius:0 2px 2px 0;transition:width .6s cubic-bezier(.4,0,.2,1);box-shadow:0 0 8px #2dd4bf99}.theme-toggle{position:relative;display:flex;align-items:center;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:14px;padding:4px;cursor:pointer;font-family:var(--font);transition:border-color .2s,background .2s,box-shadow .2s;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 2px 12px #0003,inset 0 1px #ffffff14;width:88px;height:40px}.theme-toggle:hover{background:#ffffff1a;border-color:#fff3}.toggle-slider{position:absolute;top:4px;left:4px;width:38px;height:32px;border-radius:10px;background:#ffffff2e;border:1px solid rgba(255,255,255,.25);box-shadow:0 2px 8px #0003,inset 0 1px #fff3;transition:left .35s cubic-bezier(.34,1.56,.64,1),background .3s;pointer-events:none}[data-theme=dark] .toggle-slider{left:46px;background:#2dd4bf40;border-color:#2dd4bf4d}.toggle-option{position:relative;z-index:1;width:40px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:9px;font-size:15px;transition:opacity .2s,transform .2s;flex-shrink:0}.toggle-option.active{opacity:1;transform:scale(1.05)}.toggle-option:not(.active){opacity:.4}.main{max-width:660px;margin:0 auto;padding:28px 18px 100px;display:flex;flex-direction:column;gap:14px}.prog-pill{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px 18px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.prog-pill:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--teal),#0891b2);border-radius:0 2px 2px 0}.prog-bar-wrap{flex:1;height:5px;background:var(--border-2);border-radius:99px;overflow:hidden}.prog-bar-fill{height:100%;background:linear-gradient(90deg,var(--teal),#0891b2);border-radius:99px;transition:width .6s cubic-bezier(.4,0,.2,1)}.prog-label{font-size:11px;font-weight:600;color:var(--text-muted);white-space:nowrap;min-width:165px;text-align:right;letter-spacing:.01em}.name-row{display:flex;flex-direction:column;gap:8px}.name-label{display:flex;align-items:center;gap:8px;font-size:10.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em}.name-required-badge{font-size:9px;font-weight:700;color:#dc2626;background:#fee2e2;border:1px solid #fca5a5;padding:2px 8px;border-radius:99px;letter-spacing:.05em;text-transform:uppercase}[data-theme=dark] .name-required-badge{color:#fca5a5;background:#ef44441f;border-color:#f8717140}.name-input-wrap{position:relative}.name-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:15px;pointer-events:none;opacity:.45}.name-check{position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:16px;color:var(--teal);font-weight:700;pointer-events:none;animation:checkPop .3s cubic-bezier(.34,1.56,.64,1) both}@keyframes checkPop{0%{opacity:0;transform:translateY(-50%) scale(.5)}to{opacity:1;transform:translateY(-50%) scale(1)}}.name-input{width:100%;padding:13px 44px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;font-family:var(--font);font-size:14.5px;font-weight:500;color:var(--text);outline:none;transition:border-color .2s,box-shadow .2s,background .35s;box-shadow:var(--shadow-sm)}.name-input:focus{border-color:var(--teal);box-shadow:0 0 0 4px #0d94881a,var(--shadow-sm)}.name-input.input-error{border-color:var(--red)!important;box-shadow:0 0 0 4px #ef44441a!important;animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.name-input::placeholder{color:var(--text-soft);font-weight:400}.name-error-msg{font-size:11.5px;color:var(--red);font-weight:600;padding:6px 12px;background:#ef44440f;border:1px solid rgba(239,68,68,.15);border-radius:10px;animation:fadeUp .2s ease both}.name-banner{display:flex;align-items:center;gap:12px;padding:14px 18px;background:linear-gradient(135deg,#f59e0b14,#fbbf240f);border:1.5px solid rgba(245,158,11,.3);border-radius:16px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer;transition:background .2s,border-color .2s,transform .2s;animation:fadeUp .35s cubic-bezier(.22,1,.36,1) both}.name-banner:hover{background:linear-gradient(135deg,#f59e0b24,#fbbf241a);border-color:#f59e0b80;transform:translateY(-1px)}.name-banner-icon{font-size:20px;animation:bounce 1.2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}[data-theme=dark] .name-banner{background:linear-gradient(135deg,#fbbf2414,#f59e0b0d);border-color:#fbbf2433}.cards{display:flex;flex-direction:column;gap:10px}.card{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;padding:20px 20px 16px;box-shadow:var(--shadow-sm);transition:box-shadow .3s,border-color .3s,background .35s,transform .25s cubic-bezier(.34,1.56,.64,1);animation:cardIn .5s cubic-bezier(.22,1,.36,1) both;animation-delay:var(--delay, 0ms);position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;left:16px;right:16px;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent);border-radius:99px}[data-theme=dark] .card:before{background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent)}@keyframes cardIn{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.card:hover{box-shadow:var(--shadow);border-color:var(--teal-light);transform:translateY(-2px)}[data-theme=dark] .card:hover{border-color:#1a3f3e}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.card-title-group{flex:1;min-width:0}.card-name-row{display:flex;align-items:center;gap:9px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--border);flex-shrink:0;transition:background .3s,box-shadow .3s,transform .3s}.status-dot.note-good{background:#0d9488;box-shadow:0 0 0 3px #0d948826;transform:scale(1.1)}.status-dot.note-warn{background:var(--orange);box-shadow:0 0 0 3px #f59e0b26;transform:scale(1.1)}.status-dot.note-bad{background:var(--red);box-shadow:0 0 0 3px #ef444426;transform:scale(1.1)}.card-name{font-size:14.5px;font-weight:700;color:var(--text);letter-spacing:-.02em;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-meta{display:flex;gap:6px;margin-top:7px;flex-wrap:wrap}.meta-tag{font-size:10px;font-weight:600;color:var(--text-muted);background:var(--border-2);padding:3px 9px;border-radius:99px;border:1px solid var(--border);letter-spacing:.02em}.coef-badge{background:var(--teal-bg)!important;color:var(--teal-dark)!important;border-color:#0d948833!important}[data-theme=dark] .coef-badge{background:#2dd4bf14!important;color:var(--teal)!important;border-color:#2dd4bf33!important}.note-chip{font-size:16px;font-weight:800;letter-spacing:-.03em;padding:8px 14px;border-radius:13px;min-width:64px;text-align:center;flex-shrink:0;transition:background .3s,color .3s,box-shadow .3s}.note-empty{color:var(--text-soft);background:var(--border-2);border:1.5px dashed var(--border)}.note-good{color:#0f766e;background:linear-gradient(135deg,#d1fae5,#ccfbf1);box-shadow:0 2px 8px #0d94882e}.note-warn{color:#92400e;background:linear-gradient(135deg,#fef3c7,#fde68a);box-shadow:0 2px 8px #f59e0b2e}.note-bad{color:#991b1b;background:linear-gradient(135deg,#fee2e2,#fecaca);box-shadow:0 2px 8px #ef44442e}[data-theme=dark] .note-empty{color:var(--text-soft);background:var(--border-2);border-color:var(--border)}[data-theme=dark] .note-good{color:#5eead4;background:linear-gradient(135deg,#134e4a,#0f3e3a)}[data-theme=dark] .note-warn{color:#fcd34d;background:linear-gradient(135deg,#451a03,#3a1602)}[data-theme=dark] .note-bad{color:#fca5a5;background:linear-gradient(135deg,#450a0a,#3a0808)}.progress-bar{height:3px;background:var(--border-2);border-radius:99px;margin-bottom:16px;overflow:hidden}.progress-fill{height:100%;border-radius:99px;transition:width .5s cubic-bezier(.4,0,.2,1);width:0%}.progress-fill.note-good{background:linear-gradient(90deg,#0d9488,#14b8a6)}.progress-fill.note-warn{background:linear-gradient(90deg,#d97706,var(--orange))}.progress-fill.note-bad{background:linear-gradient(90deg,#dc2626,var(--red))}.inputs-row{display:flex;gap:10px}.input-group{flex:1;display:flex;flex-direction:column;gap:6px}.input-label{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em}.label-exam{color:#3b82f6}.label-ca{color:var(--teal)}.ldot{width:5px;height:5px;border-radius:50%;flex-shrink:0}.exam-dot{background:#3b82f6}.ca-dot{background:var(--teal)}.grade-input{width:100%;padding:12px 14px;background:var(--border-2);border:1.5px solid var(--border);border-radius:13px;font-family:var(--font);font-size:16px;font-weight:700;color:var(--text);outline:none;transition:border-color .2s,background .2s,box-shadow .2s;text-align:center}.grade-input::placeholder{color:var(--text-soft);font-weight:400;font-size:13px}.grade-input:focus{background:var(--surface);border-color:var(--teal);box-shadow:0 0 0 4px #0d94881a}.recap{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;overflow:hidden;box-shadow:var(--shadow-sm);animation:fadeUp .35s cubic-bezier(.22,1,.36,1) both}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.recap-head{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);background:var(--border-2);border-bottom:1px solid var(--border)}.recap-count{font-size:11px;font-weight:700;color:var(--teal);background:var(--teal-bg);padding:2px 10px;border-radius:99px;border:1px solid rgba(13,148,136,.15)}[data-theme=dark] .recap-count{background:#2dd4bf1a;border-color:#2dd4bf26}.recap-row{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--border-2);transition:background .15s}.recap-row:last-of-type{border-bottom:none}.recap-row:hover{background:var(--border-2)}.recap-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.recap-dot.note-good{background:#0d9488}.recap-dot.note-warn{background:var(--orange)}.recap-dot.note-bad{background:var(--red)}.recap-name{flex:1;font-size:12.5px;color:var(--text);font-weight:500}.recap-coef{font-size:10.5px;color:var(--text-soft);font-weight:600;background:var(--border-2);padding:1px 7px;border-radius:99px;border:1px solid var(--border)}.recap-note{font-size:13px;font-weight:800;min-width:40px;text-align:right}.avg-card{position:relative;display:flex;align-items:center;justify-content:space-between;padding:28px;border-radius:22px;border:1.5px solid var(--border);background:var(--surface);box-shadow:var(--shadow);gap:16px;overflow:hidden;animation:avgReveal .65s cubic-bezier(.22,1,.36,1) both}@keyframes avgReveal{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.avg-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px}.avg-card.avg-green:before{background:linear-gradient(180deg,#10b981,#0d9488)}.avg-card.avg-teal:before{background:linear-gradient(180deg,var(--teal),#0891b2)}.avg-card.avg-orange:before{background:linear-gradient(180deg,var(--orange),#ef4444)}.avg-card.avg-red:before{background:linear-gradient(180deg,var(--red),#dc2626)}.avg-glow{position:absolute;width:220px;height:220px;border-radius:50%;left:-30px;top:50%;transform:translateY(-50%);opacity:.06;pointer-events:none;filter:blur(40px)}.avg-card.avg-green .avg-glow{background:#10b981}.avg-card.avg-teal .avg-glow{background:var(--teal)}.avg-card.avg-orange .avg-glow{background:var(--orange)}.avg-card.avg-red .avg-glow{background:var(--red)}.avg-left{display:flex;flex-direction:column;gap:3px;padding-left:12px}.avg-right{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.avg-eyebrow{font-size:9.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.12em}.avg-value-row{display:flex;align-items:baseline;gap:6px;margin-top:2px}.avg-value{font-size:52px;font-weight:800;letter-spacing:-.06em;line-height:1}.avg-color-green{color:#0d9488}.avg-color-teal{color:var(--teal)}.avg-color-orange{color:var(--orange)}.avg-color-red{color:var(--red)}.avg-denom{font-size:18px;color:var(--text-muted);font-weight:500;padding-bottom:4px}.avg-note-small{font-size:10.5px;color:var(--text-soft);margin-top:6px}.mention{font-size:12px;font-weight:700;padding:9px 18px;border-radius:99px;white-space:nowrap;letter-spacing:.03em;box-shadow:0 2px 8px #0000001a}.mention-green{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#065f46}.mention-teal{background:linear-gradient(135deg,#ccfbf1,#99f6e4);color:#0f766e}.mention-orange{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e}.mention-red{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#991b1b}[data-theme=dark] .mention-green{background:linear-gradient(135deg,#064e3b,#065f46);color:#6ee7b7}[data-theme=dark] .mention-teal{background:linear-gradient(135deg,#134e4a,#0f3e3a);color:#5eead4}[data-theme=dark] .mention-orange{background:linear-gradient(135deg,#451a03,#3a1602);color:#fcd34d}[data-theme=dark] .mention-red{background:linear-gradient(135deg,#450a0a,#3a0808);color:#fca5a5}.export-group{display:flex;flex-direction:column;gap:10px}.template-selector{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;box-shadow:var(--shadow-sm);animation:fadeUp .35s cubic-bezier(.22,1,.36,1) both}.template-label{font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.template-tabs{display:flex;gap:6px;flex:1}.template-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 12px;border-radius:11px;border:1.5px solid var(--border);background:var(--border-2);font-family:var(--font);font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .2s cubic-bezier(.34,1.56,.64,1)}.template-tab:hover{border-color:var(--teal-light);color:var(--text);transform:translateY(-1px)}.template-tab.active{border-color:var(--teal);background:var(--teal-bg);color:var(--teal-dark);box-shadow:0 2px 8px #0d948826;transform:translateY(-1px)}[data-theme=dark] .template-tab.active{color:var(--teal);background:#2dd4bf1a;border-color:#2dd4bf4d}.actions{display:flex;flex-direction:column;gap:10px;padding-top:4px}.btn-export{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px;background:linear-gradient(135deg,#0f766e,#0d9488 55%,#0891b2);color:#fff;border:none;border-radius:16px;font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;box-shadow:0 4px 20px #0d948866,0 1px #ffffff1f inset;transition:opacity .15s,transform .2s,box-shadow .2s;animation:fadeUp .4s cubic-bezier(.22,1,.36,1) both;letter-spacing:.02em;position:relative;overflow:hidden}.btn-export:after{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);transform:skew(-20deg);transition:left .5s ease}.btn-export:hover:not(:disabled):after{left:140%}.btn-export:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 28px #0d948880}.btn-export:active:not(:disabled){transform:translateY(0)}.btn-export:disabled{opacity:.5;cursor:not-allowed}.btn-export-locked{background:linear-gradient(135deg,#374151,#4b5563)!important;box-shadow:0 4px 16px #0003!important;cursor:pointer!important;opacity:1!important;animation:pulse-lock 2s infinite}@keyframes pulse-lock{0%,to{box-shadow:0 4px 16px #0003}50%{box-shadow:0 4px 24px #f59e0b4d}}.btn-dl-icon{font-size:18px;font-weight:900;line-height:1}.spinner{display:inline-block;width:15px;height:15px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .65s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.gate-spinner{display:inline-block;width:15px;height:15px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .65s linear infinite;flex-shrink:0}.btn-reset{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;background:transparent;border:1.5px solid var(--border);border-radius:16px;font-family:var(--font);font-size:13px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:border-color .2s,color .2s,background .2s,transform .2s}.btn-reset:hover{border-color:var(--red);color:var(--red);background:#ef44440a;transform:translateY(-1px)}@media (max-width: 480px){.header h1{font-size:22px}.avg-value{font-size:40px}.card-name{font-size:13.5px}.prog-label{min-width:0;font-size:10px}.main{padding:20px 14px 80px}.avg-card{padding:22px 20px}.template-selector{flex-direction:column;align-items:flex-start}.template-tabs{width:100%}}.gate-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(145deg,#060d19,#081a18,#040e1a);display:flex;align-items:center;justify-content:center;z-index:9999;overflow:hidden;padding:16px}.gate-orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none;animation:orbFloat 8s ease-in-out infinite}.gate-orb-1{width:400px;height:400px;background:radial-gradient(circle,rgba(13,148,136,.18) 0%,transparent 70%);top:-100px;right:-80px;animation-delay:0s}.gate-orb-2{width:350px;height:350px;background:radial-gradient(circle,rgba(8,145,178,.12) 0%,transparent 70%);bottom:-80px;left:-60px;animation-delay:-3s}.gate-orb-3{width:250px;height:250px;background:radial-gradient(circle,rgba(45,212,191,.08) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);animation-delay:-5s}@keyframes orbFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-20px) scale(1.05)}}.gate-orb-3{animation:orbFloat3 10s ease-in-out infinite}@keyframes orbFloat3{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.15)}}.gate-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(45,212,191,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(45,212,191,.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}.gate-card{position:relative;background:#111827eb;border:1.5px solid rgba(45,212,191,.15);border-radius:24px;padding:44px 36px 36px;width:100%;max-width:420px;box-shadow:0 0 0 1px #ffffff0a,0 24px 80px #0009,0 0 60px #0d948814;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);animation:gateCardIn .6s cubic-bezier(.22,1,.36,1) both;text-align:center;overflow:hidden}@keyframes gateCardIn{0%{opacity:0;transform:translateY(28px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.gate-shake{animation:gateShake .45s cubic-bezier(.36,.07,.19,.97) both!important}@keyframes gateShake{0%,to{transform:translate(0)}15%{transform:translate(-8px)}30%{transform:translate(8px)}45%{transform:translate(-6px)}60%{transform:translate(6px)}75%{transform:translate(-3px)}90%{transform:translate(3px)}}.gate-accent-bar{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#0d9488,#2dd4bf,#0891b2);border-radius:24px 24px 0 0}.gate-icon-wrap{position:relative;display:inline-flex;align-items:center;justify-content:center;margin-bottom:20px}.gate-icon-ring{position:absolute;width:68px;height:68px;border-radius:50%;border:1.5px solid rgba(45,212,191,.2);animation:ringPulse 2.5s ease-in-out infinite}@keyframes ringPulse{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.12);opacity:1}}.gate-icon{font-size:36px;line-height:1;filter:drop-shadow(0 0 16px rgba(45,212,191,.4))}.gate-univ-tag{display:inline-flex;align-items:center;gap:6px;background:#2dd4bf14;color:#5eead4cc;font-size:9.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:4px 14px;border-radius:99px;margin-bottom:14px;border:1px solid rgba(45,212,191,.15)}.gate-title{font-size:26px;font-weight:800;color:#f1f5f9;letter-spacing:-.04em;margin-bottom:8px;line-height:1.15}.gate-sub{font-size:13px;color:#94a3b8cc;line-height:1.55;margin-bottom:28px;font-weight:400}.gate-input-wrap{position:relative;margin-bottom:10px}.gate-input-icon{position:absolute;left:16px;top:50%;transform:translateY(-50%);font-size:15px;pointer-events:none;opacity:.5}.gate-show-btn{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:16px;opacity:.5;transition:opacity .2s;padding:4px;line-height:1}.gate-show-btn:hover{opacity:.9}.gate-input{width:100%;padding:14px 48px;background:#0f172acc;border:1.5px solid rgba(30,41,59,.9);border-radius:14px;font-family:var(--font);font-size:15px;font-weight:600;color:#f1f5f9;outline:none;transition:border-color .2s,box-shadow .2s;text-align:center;letter-spacing:.05em}.gate-input::placeholder{color:#475569b3;font-weight:400;letter-spacing:0}.gate-input:focus{border-color:#2dd4bf80;box-shadow:0 0 0 4px #2dd4bf1a}.gate-input-error{border-color:#ef444499!important;box-shadow:0 0 0 4px #ef44441a!important}.gate-error{font-size:12px;font-weight:600;color:#f87171;background:#ef444414;border:1px solid rgba(239,68,68,.18);border-radius:10px;padding:8px 14px;margin-bottom:12px;animation:fadeUp .2s ease both}.gate-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:15px 24px;background:linear-gradient(135deg,#0f766e,#0d9488 55%,#0891b2);color:#fff;border:none;border-radius:14px;font-family:var(--font);font-size:14.5px;font-weight:700;cursor:pointer;box-shadow:0 4px 20px #0d948866,0 1px #ffffff1a inset;transition:transform .2s,box-shadow .2s;letter-spacing:.02em;margin-bottom:18px;position:relative;overflow:hidden}.gate-btn:after{content:"";position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);transform:skew(-20deg);transition:left .5s ease}.gate-btn:hover:after{left:140%}.gate-btn:hover{transform:translateY(-2px);box-shadow:0 8px 28px #0d948880}.gate-btn:active{transform:translateY(0)}.gate-btn-arrow{font-size:18px;font-weight:900;transition:transform .2s}.gate-btn:hover .gate-btn-arrow{transform:translate(3px)}.gate-hint{font-size:11px;color:#475569cc;font-weight:500}.admin-back-link{color:#5eead499;text-decoration:none;transition:color .2s}.admin-back-link:hover{color:#5eead4e6}.save-toast{display:flex;align-items:center;gap:10px;padding:12px 18px;background:linear-gradient(135deg,#0d94881f,#0891b214);border:1px solid rgba(13,148,136,.3);border-radius:14px;font-size:13px;font-weight:600;color:var(--teal);animation:toastIn .4s cubic-bezier(.22,1,.36,1) both,toastOut .4s ease 3.1s both;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.save-toast-icon{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#0d948833;font-size:12px;font-weight:800;flex-shrink:0}@keyframes toastIn{0%{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-6px)}}.calc-footer{display:flex;align-items:center;justify-content:center;gap:10px;padding:16px 0 0;font-size:11px;font-weight:500;color:var(--text-soft);opacity:.6;transition:opacity .2s}.calc-footer:hover{opacity:1}.calc-footer-sep{opacity:.4}.calc-footer-admin-link{color:var(--teal);text-decoration:none;font-weight:600;letter-spacing:.02em;transition:opacity .2s}.calc-footer-admin-link:hover{opacity:.75}.card-done{border-color:#0d94882e!important}[data-theme=dark] .card-done{border-color:#2dd4bf1a!important}.adm-app{display:flex;min-height:100vh;background:#080e1a;font-family:var(--font, "Sora", sans-serif);color:#f1f5f9}.adm-sidebar{width:220px;flex-shrink:0;background:#0a1120;border-right:1px solid #1e293b;display:flex;flex-direction:column;padding:24px 0 20px;position:sticky;top:0;height:100vh;overflow-y:auto}.adm-logo{display:flex;align-items:center;gap:12px;padding:0 20px 24px;border-bottom:1px solid #1e293b;margin-bottom:12px}.adm-logo-icon{font-size:26px}.adm-logo-title{font-size:14px;font-weight:800;color:#f1f5f9}.adm-logo-sub{font-size:10px;color:#475569;font-weight:500;margin-top:1px}.adm-nav{display:flex;flex-direction:column;gap:2px;padding:0 10px;flex:1}.adm-nav-item{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;font-size:13px;font-weight:600;color:#64748b;text-decoration:none;transition:background .15s,color .15s;cursor:pointer}.adm-nav-item:hover{background:#111827;color:#94a3b8}.adm-nav-item.active{background:#0d94881f;color:#2dd4bf}.adm-nav-item span{font-size:15px}.adm-logout-btn{margin:0 10px;display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:12px;font-size:13px;font-weight:600;color:#64748b;background:none;border:none;cursor:pointer;font-family:inherit;transition:background .15s,color .15s;text-align:left;width:calc(100% - 20px)}.adm-logout-btn:hover{background:#ef444414;color:#f87171}.adm-logout-btn span{font-size:15px}.adm-main{flex:1;min-width:0;padding:28px 32px 60px;display:flex;flex-direction:column;gap:22px;max-width:1100px}.adm-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.adm-page-title{font-size:22px;font-weight:800;color:#f1f5f9;letter-spacing:-.03em;line-height:1.2}.adm-page-sub{font-size:12px;color:#475569;margin-top:3px}.adm-topbar-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.adm-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:12px;font-size:13px;font-weight:700;cursor:pointer;border:none;font-family:inherit;transition:opacity .15s,transform .2s,box-shadow .2s;text-decoration:none}.adm-btn:hover{transform:translateY(-1px);opacity:.92}.adm-btn:active{transform:translateY(0)}.adm-btn-primary{background:linear-gradient(135deg,#0f766e,#0d9488);color:#fff;box-shadow:0 4px 14px #0d948859}.adm-btn-secondary{background:#111827;color:#94a3b8;border:1px solid #1e293b}.adm-btn-secondary:hover{color:#f1f5f9;border-color:#334155}.adm-btn-danger{background:#ef44441f;color:#f87171;border:1px solid rgba(239,68,68,.2)}.adm-btn-danger:hover{background:#ef444433}.adm-back-btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:#64748b;text-decoration:none;padding:8px 14px;border-radius:10px;background:#111827;border:1px solid #1e293b;transition:color .15s,border-color .15s}.adm-back-btn:hover{color:#f1f5f9;border-color:#334155}.adm-stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.adm-stat-card{background:#0f1623;border:1px solid #1e293b;border-radius:16px;padding:20px;display:flex;align-items:center;gap:16px;position:relative;overflow:hidden;transition:border-color .2s}.adm-stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent, #0d9488);border-radius:16px 16px 0 0;opacity:.8}.adm-stat-card:hover{border-color:#334155}.adm-stat-icon{font-size:26px;flex-shrink:0}.adm-stat-body{display:flex;flex-direction:column;gap:1px}.adm-stat-label{font-size:10px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.09em}.adm-stat-value{font-size:24px;font-weight:800;color:#f1f5f9;letter-spacing:-.04em}.adm-stat-sub{font-size:11px;color:#64748b;margin-top:1px}.adm-charts-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media (max-width: 768px){.adm-charts-row{grid-template-columns:1fr}}.adm-chart-card{background:#0f1623;border:1px solid #1e293b;border-radius:16px;padding:20px}.adm-chart-title{font-size:13px;font-weight:700;color:#94a3b8;margin-bottom:16px}.adm-chart-empty{height:160px;display:flex;align-items:center;justify-content:center;color:#334155;font-size:13px}.adm-table-card{background:#0f1623;border:1px solid #1e293b;border-radius:16px;overflow:hidden}.adm-table-header-row{padding:18px 20px 12px;border-bottom:1px solid #1a2235}.adm-table-toolbar{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid #1a2235;flex-wrap:wrap}.adm-search{flex:1;min-width:180px;padding:10px 14px;background:#080e1a;border:1px solid #1e293b;border-radius:10px;font-family:inherit;font-size:13px;color:#f1f5f9;outline:none;transition:border-color .2s}.adm-search:focus{border-color:#0d948880;box-shadow:0 0 0 3px #0d948814}.adm-search::placeholder{color:#334155}.adm-select{padding:10px 12px;background:#080e1a;border:1px solid #1e293b;border-radius:10px;font-family:inherit;font-size:13px;color:#94a3b8;outline:none;cursor:pointer;transition:border-color .2s}.adm-select:focus{border-color:#0d948880}.adm-table-wrap{overflow-x:auto}.adm-table{width:100%;border-collapse:collapse;font-size:13px}.adm-table th{padding:11px 16px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#475569;background:#0a1120;border-bottom:1px solid #1a2235;white-space:nowrap}.adm-th-sort{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}.adm-th-sort:hover{color:#94a3b8}.adm-tr{border-bottom:1px solid #111a2a;transition:background .12s}.adm-tr:last-child{border-bottom:none}.adm-tr:hover{background:#ffffff05}.adm-table td{padding:12px 16px;color:#cbd5e1;vertical-align:middle}.adm-td-name{font-weight:600;color:#f1f5f9}.adm-td-date{font-size:12px;color:#64748b}.adm-td-center{text-align:center}.adm-td-weighted{font-weight:700;color:#94a3b8}.adm-na{color:#334155}.adm-mention-badge{display:inline-block;font-size:11px;font-weight:700;padding:4px 12px;border-radius:99px;letter-spacing:.03em}.adm-mention-green{background:#10b9811f;color:#34d399;border:1px solid rgba(16,185,129,.2)}.adm-mention-teal{background:#0891b21f;color:#38bdf8;border:1px solid rgba(8,145,178,.2)}.adm-mention-orange{background:#f59e0b1f;color:#fbbf24;border:1px solid rgba(245,158,11,.2)}.adm-mention-red{background:#ef44441f;color:#f87171;border:1px solid rgba(239,68,68,.2)}.adm-avg-chip{display:inline-block;font-size:12px;font-weight:800;padding:4px 11px;border-radius:8px;letter-spacing:-.02em}.adm-avg-green{background:#10b9811f;color:#34d399}.adm-avg-teal{background:#0891b21f;color:#38bdf8}.adm-avg-orange{background:#f59e0b1f;color:#fbbf24}.adm-avg-red{background:#ef44441f;color:#f87171}.adm-avg-color-green{color:#34d399}.adm-avg-color-teal{color:#38bdf8}.adm-avg-color-orange{color:#fbbf24}.adm-avg-color-red{color:#f87171}.adm-semester-tag{font-size:11px;font-weight:700;padding:3px 10px;background:#2dd4bf14;color:#2dd4bf;border-radius:99px;border:1px solid rgba(45,212,191,.15)}.adm-row-actions{display:flex;gap:6px;align-items:center}.adm-action-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:1px solid #1e293b;background:#080e1a;cursor:pointer;font-size:14px;text-decoration:none;transition:background .15s,border-color .15s,transform .15s}.adm-action-btn:hover{transform:scale(1.1)}.adm-action-view:hover{background:#0d94881f;border-color:#0d94884d}.adm-action-delete:hover{background:#ef44441f;border-color:#ef44444d}.adm-note-chip{display:inline-block;font-size:13px;font-weight:700;padding:4px 12px;border-radius:8px}.adm-note-good{background:#0d94881f;color:#2dd4bf}.adm-note-warn{background:#f59e0b1f;color:#fbbf24}.adm-note-bad{background:#ef44441f;color:#f87171}.adm-note-empty{background:#111827;color:#334155}.adm-tfoot-row td{padding:12px 16px;border-top:1px solid #1e293b;background:#0a1120}.adm-tfoot-label{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.08em;text-align:right}.adm-pagination{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid #1a2235;flex-wrap:wrap;gap:10px}.adm-page-info{font-size:12px;color:#475569}.adm-page-btns{display:flex;gap:4px;flex-wrap:wrap}.adm-page-btn{padding:6px 12px;border-radius:8px;border:1px solid #1e293b;background:#080e1a;color:#64748b;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.adm-page-btn:hover:not(:disabled){background:#111827;color:#94a3b8;border-color:#334155}.adm-page-btn.active{background:#0d948826;color:#2dd4bf;border-color:#0d94884d}.adm-page-btn:disabled{opacity:.3;cursor:not-allowed}.adm-table-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:60px 20px;color:#334155;font-size:14px;font-weight:500}.adm-empty-icon{font-size:36px}.adm-empty-sub{font-size:12px;color:#1e293b;text-align:center}.adm-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px;animation:fadeIn .18s ease both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.adm-modal{background:#0f1623;border:1px solid #1e293b;border-radius:20px;padding:36px 32px 28px;width:100%;max-width:400px;text-align:center;box-shadow:0 24px 80px #000000b3;animation:modalIn .25s cubic-bezier(.22,1,.36,1) both}@keyframes modalIn{0%{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}.adm-modal-icon{font-size:36px;margin-bottom:14px}.adm-modal-title{font-size:18px;font-weight:800;color:#f1f5f9;margin-bottom:8px}.adm-modal-sub{font-size:13px;color:#64748b;line-height:1.55;margin-bottom:24px}.adm-modal-sub strong{color:#94a3b8}.adm-modal-actions{display:flex;flex-direction:column;gap:8px}.adm-detail-hero{background:#0f1623;border:1px solid #1e293b;border-radius:16px;padding:24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;position:relative;overflow:hidden}.adm-detail-hero:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent-line, #0d9488);border-radius:16px 0 0 16px}.adm-avg-green{--accent-line: #0d9488}.adm-avg-teal{--accent-line: #0891b2}.adm-avg-orange{--accent-line: #f59e0b}.adm-avg-red{--accent-line: #ef4444}.adm-detail-hero-left{display:flex;align-items:center;gap:16px}.adm-detail-hero-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.adm-detail-avatar{width:52px;height:52px;border-radius:14px;background:#0d948826;border:1px solid rgba(13,148,136,.25);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:#2dd4bf;flex-shrink:0}.adm-detail-name{font-size:18px;font-weight:800;color:#f1f5f9}.adm-detail-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:#475569;margin-top:4px;flex-wrap:wrap}.adm-detail-avg{font-size:40px;font-weight:800;letter-spacing:-.05em;line-height:1}.adm-detail-avg-denom{font-size:16px;color:#475569;font-weight:500;padding-bottom:2px}.adm-not-found{align-items:center;justify-content:center;flex-direction:column}.adm-nf-card{text-align:center;padding:60px 40px;background:#0f1623;border:1px solid #1e293b;border-radius:20px;max-width:400px;display:flex;flex-direction:column;gap:12px;align-items:center}.adm-nf-icon{font-size:48px}@media (max-width: 768px){.adm-sidebar{position:fixed;left:-240px;top:0;bottom:0;z-index:999;transition:left .3s cubic-bezier(.22,1,.36,1);width:220px;box-shadow:4px 0 30px #00000080}.adm-sidebar.adm-sidebar-open{left:0}.adm-main{padding:70px 14px 40px}.adm-stats-row{grid-template-columns:1fr 1fr}.adm-topbar{flex-direction:column}.adm-detail-hero{flex-direction:column;align-items:flex-start}.adm-detail-hero-right{align-items:flex-start}}@media (max-width: 480px){.adm-stats-row{grid-template-columns:1fr}}.adm-mobile-topbar{display:none;position:fixed;top:0;left:0;right:0;height:56px;background:#0a1120;border-bottom:1px solid #1e293b;align-items:center;justify-content:space-between;padding:0 14px;z-index:998}@media (max-width: 768px){.adm-mobile-topbar{display:flex}}.adm-hamburger{display:flex;flex-direction:column;gap:5px;width:36px;height:36px;justify-content:center;align-items:center;background:#111827;border:1px solid #1e293b;border-radius:10px;cursor:pointer;padding:0}.adm-hamburger-line{width:18px;height:2px;background:#94a3b8;border-radius:2px;transition:transform .2s,opacity .2s}.adm-hamburger.open .adm-hamburger-line:nth-child(1){transform:translateY(7px) rotate(45deg)}.adm-hamburger.open .adm-hamburger-line:nth-child(2){opacity:0}.adm-hamburger.open .adm-hamburger-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.adm-mobile-title{font-size:14px;font-weight:800;color:#f1f5f9}.adm-sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:998;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media (max-width: 768px){.adm-sidebar-backdrop{display:block}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--teal: #0d9488;--teal-dark: #0f766e;--teal-bg: #f0fdfa;--teal-light: #ccfbf1;--green: #059669;--bg: #f8fafc;--surface: #ffffff;--border: #e2e8f0;--border-2: #f1f5f9;--text: #0f172a;--text-muted: #64748b;--text-soft: #94a3b8;--red: #ef4444;--orange: #f59e0b;--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow: 0 4px 16px rgba(0,0,0,.07);--font: "Sora", sans-serif}[data-theme=dark]{--teal: #2dd4bf;--teal-dark: #14b8a6;--teal-bg: #042f2e;--teal-light: #134e4a;--green: #34d399;--bg: #0a0f1a;--surface: #111827;--border: #1e293b;--border-2: #0f172a;--text: #f1f5f9;--text-muted: #94a3b8;--text-soft: #475569;--red: #f87171;--orange: #fbbf24;--shadow-sm: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2);--shadow: 0 4px 16px rgba(0,0,0,.4)}body{font-family:var(--font);background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased;transition:background .3s ease,color .3s ease}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none}input[type=number]{-moz-appearance:textfield}
