:root{--np-void: #0a0a0c;--np-carbon: #131316;--np-panel: #17171b;--np-well: #0e0e11;--np-line: #2a2a31;--np-cream: #f4f2ea;--np-muted: #8b8b95;--np-faint: #55555e;--np-purple: #6533f4;--np-purple-deep: #43209e;--np-acid: #cfff04;--np-acid-hover: #dbff3d;--np-acid-mid: #94b802;--np-acid-deep: #5e7600;--np-acid-text: #0a0a0c;--np-pink: #ff2e63;--np-pink-hover: #ff4f7c;--np-pink-mid: #b81f46;--np-pink-deep: #7d1530;--np-pink-text: #f4f2ea;--np-orange: #ffa114;--np-font-display: "Archivo Black", "Arial Black", sans-serif;--np-font-ui: "Space Grotesk", "Segoe UI", sans-serif;--np-font-scale: 1;--np-nav-h: 76px}*,*:before,*:after{-webkit-tap-highlight-color:transparent}html:root,html:root[data-theme=light],html:root[data-theme=dark]{font-family:var(--np-font-ui);font-size:calc(100% * var(--np-font-scale, 1));--bg-primary: var(--np-panel);--bg-secondary: var(--np-void);--bg-tertiary: #1d1d22;--text-primary: var(--np-cream);--text-secondary: #a5a5af;--text-muted: var(--np-muted);--border-color: var(--np-line);--border-light: #222228;--shadow-light: rgba(0, 0, 0, .4);--shadow-medium: rgba(0, 0, 0, .55);--accent-primary: var(--np-acid);--accent-hover: #dbff3d;--accent-secondary: var(--np-purple);--accent-secondary-hover: #7b4ffa;--input-bg: var(--np-well);--input-border: var(--np-line);--input-focus: var(--np-acid);--card-bg: var(--np-carbon);--card-shadow: none;--header-bg: var(--np-void);--header-border: var(--np-line);--header-shadow: none}body.np-body{background:var(--np-void);color:var(--np-cream);font-family:var(--np-font-ui)}body.np-body #root{max-width:none;padding:0;text-align:left}body.np-body button{border-radius:0;font-family:var(--np-font-ui)}body.np-body button.primary{background-color:var(--np-acid);border:1px solid #000;color:var(--np-acid-text);font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:13px}body.np-body button.primary:hover{background-color:var(--np-acid-hover);color:var(--np-acid-text);border-color:#000}body.np-body button.secondary{background-color:transparent;border:1px solid var(--np-line);color:var(--np-cream);font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:13px}body.np-body button.secondary:hover{background-color:#1d1d22;border-color:var(--np-muted);color:var(--np-cream)}body.np-body button.danger{background-color:var(--np-pink);border:1px solid #000;color:#0a0a0c;font-weight:700;letter-spacing:.12em;text-transform:uppercase;font-size:13px}body.np-body input,body.np-body textarea,body.np-body select,body.np-body .form-select{border-radius:0;background-color:var(--np-well);border:1px solid var(--np-line);color:var(--np-cream);font-family:var(--np-font-ui);caret-color:var(--np-acid)}body.np-body input:focus,body.np-body textarea:focus,body.np-body select:focus,body.np-body .form-select:focus{outline:none;border-color:var(--np-acid);box-shadow:3px 3px #cfff0433}body.np-body .card,body.np-body .class-card,body.np-body .modal-content,body.np-body .attendance-card,body.np-body .register-modal,body.np-body .subject-card,body.np-body .maddy-card{border-radius:0;background:var(--np-carbon);border:1px solid var(--np-line);box-shadow:none}body.np-body .modal-overlay{background:#040406d1}body.np-body .register-modal{background:var(--np-carbon)}body.np-body .modal-header{background:var(--np-panel);border-bottom:1px solid var(--np-line)}body.np-body .modal-header h2{color:var(--np-cream);font-size:15px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}body.np-body .toast{border-radius:0}.np-eyebrow{display:block;font:700 11px/1 var(--np-font-ui);letter-spacing:.28em;text-transform:uppercase;color:var(--np-muted)}.np-eyebrow--acid{color:var(--np-acid)}.np-app{min-height:100vh;min-height:100dvh;background:var(--np-void);color:var(--np-cream);font-family:var(--np-font-ui);padding:0 16px calc(var(--np-nav-h) + 34px + env(safe-area-inset-bottom,0px))}.np-app__inner{width:100%;max-width:520px;margin:0 auto}.np-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0 20px}.np-topbar__brand{display:flex;align-items:center;gap:10px;text-decoration:none}.np-topbar__tile{width:30px;height:30px;background:var(--np-acid);border:1px solid #000;box-shadow:3px 3px 0 0 var(--np-purple);display:flex;align-items:center;justify-content:center;font-family:var(--np-font-display);font-size:12px;color:#0a0a0c}.np-topbar__word{font-family:var(--np-font-display);font-size:15px;color:var(--np-cream);letter-spacing:.01em}.np-topbar__word i{font-style:normal;color:var(--np-pink)}.np-topbar__actions{display:flex;align-items:center;gap:10px}body.np-body button.np-iconbtn{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;min-height:0;padding:8px 10px;background:var(--np-carbon);border:1px solid var(--np-line);border-radius:0;color:var(--np-cream);font:700 10px/1 var(--np-font-ui);letter-spacing:.18em;text-transform:uppercase;cursor:pointer}body.np-body button.np-iconbtn:hover{border-color:var(--np-acid);color:var(--np-acid);background:var(--np-carbon)}body.np-body button.np-iconbtn:disabled{opacity:.5;cursor:wait}body.np-body button.np-iconbtn--exit{border-color:var(--np-pink);color:var(--np-pink)}.np-spin{animation:np-spin .9s linear infinite}@keyframes np-spin{to{transform:rotate(360deg)}}.np-avatar{display:block;width:36px;height:36px;background:var(--np-panel);border:1px solid var(--np-line);padding:2px;cursor:pointer}.np-avatar img{width:100%;height:100%;display:block}.np-avatar:hover,.np-avatar--active{border-color:var(--np-acid)}.np-nav{position:fixed;bottom:0;left:0;right:0;z-index:90;background:#0a0a0cf5;backdrop-filter:blur(10px);border-top:1px solid var(--np-line);padding-bottom:env(safe-area-inset-bottom,0px)}.np-nav__row{max-width:520px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);height:var(--np-nav-h)}.np-nav__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-decoration:none;color:var(--np-faint);font:700 8.5px/1 var(--np-font-ui);letter-spacing:.22em;text-transform:uppercase}.np-nav__item svg{display:block}.np-nav__item:hover{color:var(--np-muted)}.np-nav__item.is-active{color:var(--np-cream)}.np-nav__item.is-active .np-nav__dot{width:4px;height:4px;background:var(--np-acid)}.np-nav__dot{width:4px;height:4px;background:transparent}.np-nav__core{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-decoration:none;position:relative}.np-nav__diamond{position:relative;top:-18px;width:46px;height:46px;background:var(--np-acid);border:1px solid #000;box-shadow:4px 4px 0 0 var(--np-purple);transform:rotate(45deg);display:flex;align-items:center;justify-content:center;transition:transform .1s ease,box-shadow .1s ease}.np-nav__diamond svg{transform:rotate(-45deg);color:#0a0a0c}.np-nav__core:active .np-nav__diamond{transform:rotate(45deg) translate(3px,3px);box-shadow:1px 1px 0 0 var(--np-purple)}.np-nav__core .np-nav__label{position:relative;top:-2px;font:700 8.5px/1 var(--np-font-ui);letter-spacing:.22em;text-transform:uppercase;color:var(--np-faint)}.np-nav__core.is-active .np-nav__label{color:var(--np-acid)}.np-nav__core.is-active .np-nav__diamond{background:#dbff3d}.np-pagehead{margin:4px 0 22px}.np-pagehead .np-eyebrow{margin-bottom:8px}.np-pagehead__title{font-family:var(--np-font-display);font-size:clamp(26px,7vw,34px);line-height:1;color:var(--np-cream);margin:0;text-transform:lowercase}.np-pagehead__title i{font-style:normal;color:var(--np-pink)}.np-pagehead__sub{margin:10px 0 0;font-size:13px;color:var(--np-muted)}.np-pagehead__row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.np-panel{position:relative;background:var(--np-carbon);border:1px solid var(--np-line);padding:18px;margin-bottom:14px}.np-panel__label{font:700 10px/1 var(--np-font-ui);letter-spacing:.26em;text-transform:uppercase;color:var(--np-muted);margin-bottom:12px}.np-toggle{font:700 9px/1 var(--np-font-ui);letter-spacing:.22em;text-transform:uppercase;padding:6px 12px;border:1px solid var(--np-line);color:var(--np-muted);background:var(--np-void);transition:all .15s ease}.np-toggle--on{background:var(--np-acid);color:#0a0a0c;border-color:#000;box-shadow:2px 2px 0 0 var(--np-purple)}.np-dino{position:relative;background:var(--np-carbon);border:1px solid var(--np-line);padding:14px 18px 10px;margin-bottom:14px;user-select:none;-webkit-user-select:none;touch-action:manipulation;cursor:pointer}.np-dino__hud{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:4px}.np-dino__hud .np-panel__label{margin-bottom:0}.np-dino__score{font:400 13px/1 var(--np-font-ui);letter-spacing:.18em;color:var(--np-acid);font-variant-numeric:tabular-nums}.np-dino__score small{color:var(--np-muted);font-size:10px;margin-left:8px}.np-dino__canvas{display:block;width:100%;max-width:480px;margin:0 auto;cursor:pointer}.np-board{border:1px solid var(--np-line);background:var(--np-void);margin-top:10px;transition:opacity .3s ease}.np-board--dim{opacity:.3}.np-gaming-dim{opacity:.3;pointer-events:none;transition:opacity .3s ease}.np-jump-layer{position:fixed;inset:0;z-index:95;background:transparent;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.np-board__cap{font:700 8px/1 var(--np-font-ui);letter-spacing:.28em;text-transform:uppercase;color:var(--np-faint);padding:8px 12px 0;display:flex;align-items:center;justify-content:space-between}.np-board__league{color:var(--np-faint);vertical-align:-1px}.np-board__row{display:flex;align-items:center;gap:12px;padding:9px 12px}.np-board__row+.np-board__row{border-top:1px solid var(--np-line)}.np-board__rank{width:22px;height:22px;display:grid;place-items:center;font:400 11px/1 var(--np-font-disp);background:var(--np-carbon);color:var(--np-muted);border:1px solid var(--np-line);flex:none}.np-board__rank--top{background:var(--np-acid);color:#0a0a0c;border-color:#000;box-shadow:2px 2px 0 0 var(--np-purple)}.np-board__id{flex:1;font:700 12px/1 var(--np-font-ui);letter-spacing:.08em;color:var(--np-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.np-board__score{font:400 13px/1 var(--np-font-disp);color:var(--np-acid);font-variant-numeric:tabular-nums}.np-dino__hint{font:700 9px/1 var(--np-font-ui);letter-spacing:.3em;text-transform:uppercase;color:var(--np-muted);text-align:center;padding:6px 0 4px;min-height:19px}.np-now{position:relative;background:var(--np-purple);background-image:linear-gradient(rgba(244,242,234,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(244,242,234,.06) 1px,transparent 1px);background-size:30px 30px;border:1px solid #000;box-shadow:6px 6px 0 0 var(--np-pink);padding:20px 18px;margin:2px 6px 24px 0}.np-now__label{display:flex;align-items:center;gap:8px;font:700 10px/1 var(--np-font-ui);letter-spacing:.3em;text-transform:uppercase;color:var(--np-purple-text);margin-bottom:12px}.np-now__pulse{width:8px;height:8px;background:var(--np-purple-text);animation:np-pulse 1.6s ease-in-out infinite}@keyframes np-pulse{0%,to{opacity:1}50%{opacity:.25}}.np-now__class{font-family:var(--np-font-display);font-size:clamp(20px,5.6vw,26px);line-height:1.1;color:var(--np-purple-text);word-break:break-word}.np-now__time{margin-top:10px;font:700 13px/1 var(--np-font-ui);letter-spacing:.06em;color:var(--np-purple-text);opacity:.9}.np-now__progress-track{position:absolute;left:0;bottom:0;width:100%;height:3px;background:#ffffff1f;overflow:hidden}.np-now__progress-bar{height:100%;background:var(--np-acid);transition:width .5s linear,background-color .5s ease}.np-now__progress-bar--warning{background:var(--np-pink)!important}.np-timer-readout{font:700 10px/1 var(--np-font-ui);letter-spacing:.15em;text-transform:uppercase;color:var(--np-purple-text);opacity:.85;margin-left:auto;transition:color .5s ease,opacity .5s ease}.np-timer-readout--warning{color:var(--np-pink)!important;opacity:1!important}.np-now--idle{background:var(--np-carbon);box-shadow:6px 6px 0 0 var(--np-purple);border-color:var(--np-line)}.np-now--idle .np-now__class{color:var(--np-muted);font-size:18px}.np-now--idle .np-now__pulse{background:var(--np-faint);animation:none}.np-next{display:flex;align-items:center;gap:14px;background:var(--np-carbon);border:1px solid var(--np-line);border-left:3px solid var(--np-acid);padding:14px 16px;margin-bottom:22px}.np-next__label{flex-shrink:0;font:700 10px/1.5 var(--np-font-ui);letter-spacing:.22em;text-transform:uppercase;color:var(--np-muted)}.np-next__body{min-width:0}.np-next__class{font-weight:700;font-size:14px;color:var(--np-cream);word-break:break-word}.np-next__time{margin-top:3px;font-size:12px;color:var(--np-muted);letter-spacing:.06em}.np-chips{display:flex;flex-wrap:wrap;gap:8px}.np-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;background:var(--np-panel);border:1px solid var(--np-line);font:700 11px/1 var(--np-font-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--np-cream)}.np-chip small{font-size:9px;color:var(--np-faint);letter-spacing:.14em}.np-chip--acid{border-color:var(--np-acid);color:var(--np-acid)}.np-block{display:flex;align-items:stretch;gap:0;background:var(--np-carbon);border:1px solid var(--np-line);margin-bottom:10px}.np-block__time{flex:0 0 86px;padding:14px 12px;border-right:1px solid var(--np-line);font:700 12px/1.5 var(--np-font-ui);letter-spacing:.04em;color:var(--np-acid);display:flex;flex-direction:column;justify-content:center}.np-block__time small{color:var(--np-faint);font-size:10px;letter-spacing:.1em}.np-block__name{padding:14px;font-weight:500;font-size:14px;color:var(--np-cream);word-break:break-word;display:flex;align-items:center}.np-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:18px;scrollbar-width:none}.np-tabs::-webkit-scrollbar{display:none}body.np-body button.np-tab{flex-shrink:0;min-height:0;padding:9px 14px;background:transparent;border:1px solid var(--np-line);border-radius:0;color:var(--np-muted);font:700 11px/1 var(--np-font-ui);letter-spacing:.18em;text-transform:uppercase;cursor:pointer}body.np-body button.np-tab:hover{background:var(--np-panel);color:var(--np-cream);border-color:var(--np-line)}body.np-body button.np-tab.is-active{background:var(--np-acid);border-color:#000;color:#0a0a0c;box-shadow:3px 3px 0 0 var(--np-purple)}.np-seg{position:relative;display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--np-line);background:var(--np-carbon);margin-bottom:18px}body.np-body button.np-seg__btn{min-height:0;padding:12px;background:transparent;border:none;border-radius:0;color:var(--np-muted);font:700 12px/1 var(--np-font-ui);letter-spacing:.24em;text-transform:uppercase;cursor:pointer;position:relative;z-index:1}body.np-body button.np-seg__btn:hover{background:transparent;color:var(--np-cream);border:none}body.np-body button.np-seg__btn.is-active{color:#0a0a0c}.np-seg__slider{position:absolute;top:-1px;left:-1px;width:calc(50% + 1px);height:calc(100% + 2px);background:var(--np-acid);border:1px solid #000;transition:transform .18s ease}.np-seg__slider.is-right{transform:translate(100%)}.np-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--np-line);border:1px solid var(--np-line);margin-top:14px}.np-stat{background:var(--np-carbon);padding:10px 8px;text-align:center}.np-stat__label{font:700 8.5px/1 var(--np-font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--np-faint);margin-bottom:6px}.np-stat__value{font:700 15px/1 var(--np-font-ui);color:var(--np-cream)}.np-good{color:var(--np-acid)!important}.np-warn{color:var(--np-orange)!important}.np-bad{color:var(--np-pink)!important}.np-dim{color:var(--np-muted)!important}.np-att{background:var(--np-carbon);border:1px solid var(--np-line);margin-bottom:16px}.np-att__head{padding:16px 16px 14px;border-bottom:1px solid var(--np-line)}.np-att__code{font:700 10px/1 var(--np-font-ui);letter-spacing:.2em;text-transform:uppercase;color:var(--np-faint);margin-bottom:6px}.np-att__name{font-weight:700;font-size:15px;color:var(--np-cream);margin:0}.np-att__total{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:var(--np-panel);border-bottom:1px solid var(--np-line)}.np-att__total-meta{font-size:11px;color:var(--np-muted);letter-spacing:.04em}.np-att__total-pct{font-family:var(--np-font-display);font-size:30px;line-height:1}.np-att__tools{display:flex;gap:8px;margin-top:8px}body.np-body button.np-minibtn{min-height:0;padding:6px 10px;background:transparent;border:1px solid var(--np-line);border-radius:0;color:var(--np-muted);font:700 9px/1 var(--np-font-ui);letter-spacing:.16em;text-transform:uppercase;cursor:pointer}body.np-body button.np-minibtn:hover{border-color:var(--np-acid);color:var(--np-acid);background:transparent}.np-att__section{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--np-line)}.np-att__section:last-child{border-bottom:none}.np-att__ltps{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 6px;background:var(--np-purple);border:1px solid #000;color:var(--np-cream);font:700 11px/1 var(--np-font-ui)}.np-att__section-info{flex:1;min-width:0}.np-att__section-name{font-size:12px;color:var(--np-muted);margin:6px 0;word-break:break-word}.np-att__nums{text-align:right;flex-shrink:0}.np-att__pct{font:700 17px/1 var(--np-font-ui)}.np-att__pct small{font-size:10px;color:var(--np-faint);font-weight:500}.np-att__detail{margin-top:4px;font-size:11px;color:var(--np-muted)}.np-att__hint{margin-top:5px;font-size:11px;color:var(--np-muted)}.np-att__hint b{color:var(--np-cream)}.np-gpa{position:relative;background:var(--np-purple);background-image:linear-gradient(rgba(244,242,234,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(244,242,234,.06) 1px,transparent 1px);background-size:30px 30px;border:1px solid #000;box-shadow:6px 6px 0 0 var(--np-pink);padding:22px 18px;margin:2px 6px 22px 0;text-align:center}.np-gpa__badge{display:inline-block;padding:5px 10px;background:var(--np-acid);border:1px solid #000;color:#0a0a0c;font:700 10px/1 var(--np-font-ui);letter-spacing:.26em;text-transform:uppercase;margin-bottom:12px}.np-gpa__value{font-family:var(--np-font-display);font-size:clamp(44px,13vw,58px);line-height:1;color:var(--np-cream)}.np-gpa__sub{margin:10px 0 0;font-size:12px;letter-spacing:.06em;color:#f4f2eabf}.np-grade-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--np-line);border-top:1px solid var(--np-line)}.np-maddy{background:var(--np-carbon);border:1px solid var(--np-line);padding:16px;margin-bottom:14px}.np-maddy__top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.np-maddy__name{font-family:var(--np-font-display);font-size:19px;color:var(--np-cream);margin:0;text-transform:lowercase}.np-maddy__meta{font-size:12px;color:var(--np-muted);margin:0 0 14px}.np-maddy__actions{display:flex;flex-wrap:wrap;gap:8px}body.np-body button.np-action{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;min-height:0;padding:0;background:var(--np-panel);border:1px solid var(--np-line);border-radius:0;color:var(--np-muted);cursor:pointer}body.np-body button.np-action:hover{border-color:var(--np-acid);color:var(--np-acid);background:var(--np-panel)}body.np-body button.np-action--danger:hover{border-color:var(--np-pink);color:var(--np-pink)}.np-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px}.np-compare__panel{background:var(--np-well);border:1px solid var(--np-line);min-height:200px}.np-compare__label{padding:10px;border-bottom:1px solid var(--np-line);font:700 10px/1 var(--np-font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--np-acid);text-align:center}.np-compare__label select{width:100%;padding:6px 8px;font-size:12px}.np-compare__body{padding:8px}.np-compare__block{background:var(--np-carbon);border:1px solid var(--np-line);padding:8px 10px;margin-bottom:6px}.np-compare__time{font:700 10px/1 var(--np-font-ui);letter-spacing:.08em;color:var(--np-acid);margin-bottom:4px}.np-compare__name{font-size:11px;color:var(--np-cream);word-break:break-word}.np-subjects{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.np-subject{background:var(--np-carbon);border:1px solid var(--np-line);padding:14px}.np-subject__code{font:700 11px/1 var(--np-font-ui);letter-spacing:.12em;color:var(--np-acid);margin-bottom:10px;word-break:break-all}.np-subject__name{font-family:var(--np-font-display);font-size:17px;color:var(--np-cream);margin-bottom:12px;min-height:20px}.np-subject__name.is-unset{color:var(--np-faint);font-family:var(--np-font-ui);font-size:13px;font-weight:500}.np-subject__row{display:flex;gap:6px}.np-profile-head{display:flex;align-items:center;gap:16px;margin-bottom:22px}.np-profile-head .np-avatar{width:68px;height:68px;cursor:default}.np-profile-head__id{font-family:var(--np-font-display);font-size:19px;color:var(--np-cream);word-break:break-all}.np-profile-head__meta{margin-top:5px;font-size:12px;color:var(--np-muted)}.np-linkrow{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;background:var(--np-carbon);border:1px solid var(--np-line);padding:15px 16px;margin-bottom:10px;cursor:pointer;text-decoration:none;color:var(--np-cream);font:700 12px/1 var(--np-font-ui);letter-spacing:.16em;text-transform:uppercase;min-height:0;border-radius:0;text-align:left}body.np-body button.np-linkrow{background:var(--np-carbon);border:1px solid var(--np-line);color:var(--np-cream)}.np-linkrow:hover,body.np-body button.np-linkrow:hover{border-color:var(--np-acid);background:var(--np-carbon);color:var(--np-cream)}.np-linkrow .np-linkrow__go{color:var(--np-acid)}.np-linkrow--danger,body.np-body button.np-linkrow--danger{color:var(--np-pink)}body.np-body button.np-linkrow--danger:hover{border-color:var(--np-pink);color:var(--np-pink)}.np-social{display:flex;gap:10px;margin-top:12px}.np-social a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--np-panel);border:1px solid var(--np-line);color:var(--np-muted)}.np-social a:hover{border-color:var(--np-acid);color:var(--np-acid)}.np-modal-overlay{position:fixed;inset:0;z-index:1000;background:#040406d9;display:flex;align-items:center;justify-content:center;padding:20px}.np-modal{position:relative;width:100%;max-width:420px;max-height:86vh;overflow-y:auto;background:var(--np-carbon);border:1px solid var(--np-line);box-shadow:8px 8px #6533f48c}.np-modal__head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;background:var(--np-panel);border-bottom:1px solid var(--np-line)}.np-modal__title{margin:0;font:700 13px/1.3 var(--np-font-ui);letter-spacing:.2em;text-transform:uppercase;color:var(--np-cream)}body.np-body button.np-modal__close{min-height:0;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--np-line);border-radius:0;color:var(--np-muted);font-size:15px;cursor:pointer}body.np-body button.np-modal__close:hover{border-color:var(--np-pink);color:var(--np-pink);background:transparent}.np-modal__body{padding:18px}.np-modal__actions{display:flex;gap:10px;margin-top:16px}.np-modal__actions>*{flex:1}.np-table{border:1px solid var(--np-line)}.np-table__row{display:flex;border-bottom:1px solid var(--np-line)}.np-table__row:last-child{border-bottom:none}.np-table__row.is-head{background:var(--np-panel);font:700 10px/1 var(--np-font-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--np-muted)}.np-table__cell{flex:1;padding:11px 12px;font-size:12.5px;color:var(--np-cream);border-right:1px solid var(--np-line);word-break:break-word}.np-table__cell:last-child{border-right:none}body.np-body button.np-fab{position:fixed;right:16px;z-index:80;width:48px;height:48px;min-height:0;padding:0;display:flex;align-items:center;justify-content:center;background:var(--np-acid);border:1px solid #000;border-radius:0;box-shadow:4px 4px 0 0 var(--np-purple);color:#0a0a0c;font-size:19px;cursor:pointer}body.np-body button.np-fab:hover{background:#dbff3d;color:#0a0a0c;border-color:#000}body.np-body button.np-fab:active{transform:translate(3px,3px);box-shadow:1px 1px 0 0 var(--np-purple)}.np-fab--1{bottom:calc(var(--np-nav-h) + 18px + env(safe-area-inset-bottom,0px))}.np-fab--2{bottom:calc(var(--np-nav-h) + 78px + env(safe-area-inset-bottom,0px))}.np-empty{border:1px dashed var(--np-line);padding:34px 20px;text-align:center;margin-bottom:16px}.np-empty__title{font-family:var(--np-font-display);font-size:18px;color:var(--np-cream);margin:0 0 8px;text-transform:lowercase}.np-empty__text{font-size:13px;color:var(--np-muted);margin:0 0 16px}.np-loading{display:flex;flex-direction:column;align-items:center;gap:14px;padding:40px 20px;text-align:center}.np-loading__blocks{display:flex;gap:6px}.np-loading__blocks span{width:10px;height:10px;background:var(--np-acid);animation:np-blocks 1s ease-in-out infinite}.np-loading__blocks span:nth-child(2){animation-delay:.15s;background:var(--np-purple)}.np-loading__blocks span:nth-child(3){animation-delay:.3s;background:var(--np-pink)}.np-loading__blocks span:nth-child(4){animation-delay:.45s;background:var(--np-orange)}@keyframes np-blocks{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.np-loading__text{font:700 11px/1.5 var(--np-font-ui);letter-spacing:.2em;text-transform:uppercase;color:var(--np-muted)}.np-note{font-size:12px;color:var(--np-muted);line-height:1.6}.np-error{border:1px solid var(--np-pink);background:#ff2e630f;padding:18px;text-align:center;margin-bottom:16px}.np-error p{color:var(--np-pink);font-size:13px;margin:0 0 14px}.np-field{margin-bottom:20px}.np-field__head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:9px}.np-field__label{font:700 10px/1 var(--np-font-ui);letter-spacing:.26em;text-transform:uppercase;color:var(--np-muted)}body.np-body .np-field__input,.np-screen .np-field__input{width:100%;background-color:var(--np-well);border:1px solid var(--np-line);border-radius:0;padding:14px 16px;font-family:var(--np-font-ui);font-size:16px;color:var(--np-cream);caret-color:var(--np-acid);transition:border-color .15s ease,box-shadow .15s ease;box-shadow:none;appearance:none;-webkit-appearance:none}body.np-body .np-field__input::placeholder,.np-screen .np-field__input::placeholder{color:#55555e}body.np-body .np-field__input:focus,.np-screen .np-field__input:focus{outline:none;border-color:var(--np-acid);box-shadow:4px 4px #cfff0438}body.np-body select.np-field__input,.np-screen select.np-field__input{cursor:pointer;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23cfff04' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}body.np-body select.np-field__input option,.np-screen select.np-field__input option{background-color:var(--np-carbon);color:var(--np-cream)}body.np-body button.np-peek,.np-screen button.np-peek{background:none;border:none;border-radius:0;padding:0;min-height:0;font:700 10px/1 var(--np-font-ui);letter-spacing:.22em;text-transform:uppercase;color:var(--np-acid);cursor:pointer}body.np-body button.np-peek:hover,body.np-body button.np-peek:active,.np-screen button.np-peek:hover,.np-screen button.np-peek:active{background:none;border:none;color:var(--np-cream);transform:none}.np-row{display:flex;gap:16px}.np-row .np-field{flex:1;min-width:0}.np-btn-zone{padding:0 10px 10px 0}body.np-body button.np-btn,.np-screen button.np-btn{--edge: 10px;position:relative;display:flex;align-items:center;justify-content:center;gap:12px;width:100%;background-color:var(--np-acid);border:1px solid #000;border-radius:0;padding:19px 24px;min-height:0;font:700 14px/1 var(--np-font-ui);letter-spacing:.26em;text-transform:uppercase;color:var(--np-acid-text);cursor:pointer;transform:translate(0);transition:transform .09s ease}body.np-body button.np-btn--sm,.np-screen button.np-btn--sm{--edge: 7px;padding:13px 18px;font-size:12px}body.np-body button.np-btn:before,.np-screen button.np-btn:before{content:"";position:absolute;top:0;left:100%;width:var(--edge);height:100%;background:var(--np-acid-mid);border:1px solid #000;transform:skewY(45deg);transform-origin:0 0}body.np-body button.np-btn:after,.np-screen button.np-btn:after{content:"";position:absolute;top:100%;left:0;width:100%;height:var(--edge);background:var(--np-acid-deep);border:1px solid #000;transform:skew(45deg);transform-origin:0 0}body.np-body button.np-btn:hover,.np-screen button.np-btn:hover{background-color:#dbff3d;border-color:#000;color:var(--np-void)}body.np-body button.np-btn:active,.np-screen button.np-btn:active{transform:translate(var(--edge),var(--edge))}body.np-body button.np-btn:active:before,body.np-body button.np-btn:active:after,.np-screen button.np-btn:active:before,.np-screen button.np-btn:active:after{display:none}body.np-body button.np-btn:disabled,.np-screen button.np-btn:disabled{background-color:#3a3a20;color:#8b8b6a;cursor:wait;transform:translate(var(--edge),var(--edge))}body.np-body button.np-btn:disabled:before,body.np-body button.np-btn:disabled:after,.np-screen button.np-btn:disabled:before,.np-screen button.np-btn:disabled:after{display:none}body.np-body button.np-btn:focus-visible,.np-screen button.np-btn:focus-visible{outline:2px solid var(--np-cream);outline-offset:3px}body.np-body button.np-btn--pink,.np-screen button.np-btn--pink{background-color:var(--np-pink);color:var(--np-pink-text)}body.np-body button.np-btn--pink:before{background:var(--np-pink-mid)}body.np-body button.np-btn--pink:after{background:var(--np-pink-deep)}body.np-body button.np-btn--pink:hover{background-color:#ff4f7c;color:var(--np-cream)}.np-btn__arrow{font-family:var(--np-font-ui);font-size:16px;line-height:1}.np-screen{min-height:100vh;min-height:100dvh;background:var(--np-void);color:var(--np-cream);font-family:var(--np-font-ui);position:relative;overflow:hidden;padding:40px 20px 72px;display:flex;justify-content:center}.np-shell{width:100%;max-width:440px;position:relative;z-index:2}.np-plaque{position:relative;background:var(--np-purple);background-image:linear-gradient(rgba(244,242,234,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(244,242,234,.07) 1px,transparent 1px);background-size:34px 34px;border:1px solid #000;box-shadow:8px 8px 0 0 var(--np-pink);padding:30px 26px 26px;transform:rotate(-1.6deg);margin:18px 6px 46px 2px}.np-plaque__eyebrow{font:700 10px/1 var(--np-font-ui);letter-spacing:.3em;text-transform:uppercase;color:#f4f2ead9;margin-bottom:14px}.np-plaque__title{font-family:var(--np-font-display);font-weight:400;font-size:clamp(46px,13vw,62px);line-height:.92;letter-spacing:-.02em;text-transform:lowercase;color:var(--np-acid);margin:0 0 14px}.np-plaque__title .np-dot{color:var(--np-pink)}.np-plaque__words{display:flex;gap:14px;flex-wrap:wrap}.np-plaque__words em{font-family:var(--np-font-display);font-style:normal;font-size:15px;text-transform:lowercase;color:transparent;-webkit-text-stroke:1px rgba(244,242,234,.8)}.np-plaque__words em:nth-child(1){transform:rotate(-3deg)}.np-plaque__words em:nth-child(2){transform:rotate(2deg)}.np-plaque__words em:nth-child(3){transform:rotate(-1deg)}.np-plaque__star{position:absolute;top:-17px;right:-14px;width:34px;height:34px;color:var(--np-acid);filter:drop-shadow(2px 2px 0 #000)}.np-formhead{margin:0 2px 18px}.np-formhead .np-eyebrow{color:var(--np-acid);margin-bottom:8px}.np-formhead p{margin:0;font-size:14px;line-height:1.5;color:var(--np-muted)}.np-card{position:relative;background:var(--np-carbon);border:1px solid var(--np-line);border-radius:0;padding:26px 22px 8px;margin-bottom:30px}.np-tick{position:absolute;width:13px;height:13px;background:linear-gradient(var(--np-muted),var(--np-muted)) center / 13px 1px no-repeat,linear-gradient(var(--np-muted),var(--np-muted)) center / 1px 13px no-repeat;pointer-events:none}.np-tick--tl{top:-7px;left:-7px}.np-tick--tr{top:-7px;right:-7px}.np-tick--bl{bottom:-7px;left:-7px}.np-tick--br{bottom:-7px;right:-7px}.np-foot{margin:26px 2px 0;text-align:center;font:500 11px/1.6 var(--np-font-ui);letter-spacing:.18em;text-transform:uppercase;color:#55555e}.np-foot b{color:var(--np-muted);font-weight:700}.np-deco{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.np-deco>*{position:absolute}.np-deco .np-float-1{animation:np-float 5s ease-in-out infinite alternate}.np-deco .np-float-2{animation:np-float 7s ease-in-out .8s infinite alternate}.np-deco .np-float-3{animation:np-float 6s ease-in-out 1.6s infinite alternate}@keyframes np-float{0%{transform:translateY(0)}to{transform:translateY(-9px)}}@media (max-width: 560px){.np-deco .np-sm-hide{display:none!important}}@media (prefers-reduced-motion: reduce){.np-deco>*,.np-now__pulse,.np-loading__blocks span,body.np-body button.np-btn,.np-screen button.np-btn{animation:none!important;transition:none!important}}@media (max-width: 420px){.np-screen{padding:28px 16px 60px}.np-plaque{padding:26px 20px 22px;margin-bottom:40px}.np-stats{grid-template-columns:repeat(2,1fr)}}@media (min-width: 700px){.np-app{padding-left:24px;padding-right:24px}}.np-game-card{display:flex;align-items:center;justify-content:space-between;background:var(--np-carbon);border:1px solid var(--np-line);padding:16px 18px;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;user-select:none;touch-action:manipulation}.np-game-card:hover,.np-game-card:active{border-color:var(--np-acid);transform:translateY(-2px);box-shadow:4px 4px 0 0 var(--np-acid)}.np-game-card__left{display:flex;align-items:center;gap:14px}.np-game-card__icon{width:44px;height:44px;background:#000;border:1px solid var(--np-acid);display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:2px 2px 0 0 var(--np-acid)}.np-game-card__title{font-family:var(--np-font-display);font-size:15px;color:var(--np-cream);letter-spacing:.04em;text-transform:lowercase}.np-game-card__sub{font-size:12px;color:var(--np-muted);margin-top:2px}.np-game-card__action{display:flex;align-items:center;gap:8px}.np-chip--acid{background:var(--np-acid);color:#000;border:1px solid #000;font-weight:800;letter-spacing:.08em;font-size:11px}.np-chip--pink{background:var(--np-pink);color:#000;border:1px solid #000;font-weight:800;letter-spacing:.08em;font-size:11px}.np-chip--outline{background:transparent;color:var(--np-cream);border:1px solid var(--np-line);font-size:11px}.np-game-wrapper{display:flex;flex-direction:column;align-items:center;width:100%;max-width:420px;margin:0 auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.np-game-canvas-box{position:relative;width:100%;background:#0d0e15;border:2px solid var(--np-line);box-shadow:4px 4px 0 0 var(--np-void);touch-action:none;overflow:hidden}.np-game-canvas{display:block;width:100%;height:480px;touch-action:none;image-rendering:pixelated;image-rendering:crisp-edges}.np-game-overlay{position:absolute;inset:0;background:#0a0a0ce0;backdrop-filter:blur(4px);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;z-index:10}.np-game-overlay__title{font-family:var(--np-font-display);font-size:26px;color:var(--np-cream);margin-bottom:8px;text-transform:lowercase}.np-game-overlay__sub{font-size:13px;color:var(--np-muted);margin-bottom:20px;max-width:280px;line-height:1.4}.np-game-score-badge{font-family:var(--np-font-display);font-size:48px;color:var(--np-acid);margin:12px 0;text-shadow:3px 3px 0 #000}.np-leaderboard-list{display:flex;flex-direction:column;gap:8px;width:100%}.np-leaderboard-row{display:flex;align-items:center;justify-content:space-between;background:var(--np-carbon);border:1px solid var(--np-line);padding:12px 16px}.np-leaderboard-row--top{border-color:var(--np-acid);background:#171c11}.np-leaderboard-rank{font-family:var(--np-font-display);font-size:14px;width:28px;color:var(--np-acid)}.np-leaderboard-user{flex:1;font-weight:700;font-size:13px;color:var(--np-cream);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.np-leaderboard-score{font-family:var(--np-font-display);font-size:15px;color:var(--np-cream)}@keyframes np-game-expand{0%{opacity:0;transform:scale(.96) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes np-game-collapse{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.96) translateY(12px)}}.np-game-fs{position:fixed;left:0;right:0;top:0;bottom:calc(var(--np-nav-h) + env(safe-area-inset-bottom,0px));z-index:200;display:flex;flex-direction:column;background:var(--np-void);animation:np-game-expand .22s cubic-bezier(.22,1,.36,1) forwards}.np-game-fs.closing{animation:np-game-collapse .18s ease-in forwards;pointer-events:none}.np-game-fs__topbar{flex-shrink:0;height:46px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--np-line);background:var(--np-carbon)}.np-game-fs__canvas-wrap{flex:1;min-height:0;position:relative;overflow:hidden;touch-action:none;user-select:none}.np-game-fs__canvas-wrap canvas{display:block;width:100%;height:100%;touch-action:none}.np-game-fs__overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#0a0a0cc7}.np-game-fs__bottombar{flex-shrink:0;height:52px;display:flex;align-items:center;border-top:2px solid var(--np-acid);background:var(--np-carbon);overflow:hidden}.np-game-fs__lb-col{flex:1;height:100%;display:flex;align-items:center;justify-content:center;gap:5px;border-right:1px solid var(--np-line);padding:0 6px}.np-game-fs__lb-col:last-child{border-right:none}.np-game-fs__exit-col{width:60px;height:100%;display:flex;align-items:center;justify-content:center;border-left:1px solid var(--np-line);cursor:pointer}.np-game-idle{background:var(--np-carbon);border:1px solid var(--np-line);margin-bottom:14px}.np-game-idle__head{padding:12px 16px 10px;border-bottom:1px solid var(--np-line);display:flex;align-items:center;justify-content:space-between}.np-game-idle__hero{padding:18px 16px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--np-line)}.np-game-idle__lb{padding:0}.np-game-idle__lb-row{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--np-line);gap:8px}.np-game-idle__lb-row:last-child{border-bottom:none}.np-theme-row{display:flex;gap:16px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:none;-ms-overflow-style:none}.np-theme-row::-webkit-scrollbar{display:none}.np-theme-circle-wrap{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0}.np-theme-circle{width:48px;height:48px;border-radius:50%;border:2px solid var(--np-line);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;display:flex;align-items:center;justify-content:center;padding:0;outline:none}.np-theme-circle:hover{transform:scale(1.08)}.np-theme-circle--active{border-color:var(--np-cream);box-shadow:0 0 0 3px var(--np-void),0 0 0 5px var(--np-cream)}.np-theme-circle--add{background:var(--np-carbon)!important;border:2px dashed var(--np-faint);color:var(--np-faint)}.np-theme-circle--add:hover{border-color:var(--np-muted);color:var(--np-muted)}.np-theme-circle__label{font:600 9px/1 var(--np-font-ui);letter-spacing:.08em;color:var(--np-muted);text-transform:lowercase;white-space:nowrap;max-width:56px;overflow:hidden;text-overflow:ellipsis;text-align:center}.np-theme-circle__actions{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:4px;width:100%}body.np-body button.np-theme-action-btn,.np-screen button.np-theme-action-btn{width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;max-width:28px!important;max-height:28px!important;border-radius:50%!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;color:var(--np-faint);background:var(--np-well);border:1px solid var(--np-line);padding:0!important;margin:0!important;cursor:pointer;transition:all .15s ease;box-shadow:none!important;font-size:12px!important;line-height:1!important;vertical-align:middle!important}body.np-body button.np-theme-action-btn:before,body.np-body button.np-theme-action-btn:after{display:none!important}body.np-body button.np-theme-action-btn:hover{color:var(--np-cream);border-color:var(--np-muted);transform:translateY(-2px)!important;box-shadow:0 2px 8px #00000080!important}body.np-body button.np-theme-action-btn--del{color:var(--np-pink);border-color:var(--np-line)}body.np-body button.np-theme-action-btn--del:hover{background:var(--np-pink)!important;color:var(--np-void)!important;border-color:var(--np-pink)!important}.np-theme-editor{margin-top:20px;padding:16px;background:var(--np-carbon);border:1px solid var(--np-line);animation:np-slideUp .2s ease}@keyframes np-slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.np-theme-editor__field{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}.np-theme-editor__label{font:600 9px/1 var(--np-font-ui);letter-spacing:.15em;text-transform:uppercase;color:var(--np-muted)}.np-theme-editor__colors{display:flex;gap:10px;margin-bottom:14px}.np-color-picker{flex:1;display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--np-well);border:1px solid var(--np-line);cursor:pointer;transition:border-color .15s}.np-color-picker:hover{border-color:var(--np-muted)}.np-color-picker__swatch{width:24px;height:24px;flex-shrink:0;border:1px solid rgba(255,255,255,.15)}.np-color-picker__info{display:flex;flex-direction:column;gap:2px;min-width:0}.np-color-picker__label{font:600 8px/1 var(--np-font-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--np-muted)}.np-color-picker__hex{font:500 10px/1 var(--np-font-ui);color:var(--np-cream);letter-spacing:.05em}.np-color-picker__input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.np-theme-editor__preview{margin-bottom:14px}.np-theme-editor__preview-label{font:600 9px/1 var(--np-font-ui);letter-spacing:.15em;text-transform:uppercase;color:var(--np-muted);display:block;margin-bottom:8px}.np-theme-editor__preview-strip{display:flex;gap:8px}.np-theme-editor__swatch{flex:1;height:40px;display:flex;align-items:center;justify-content:center;font:700 13px/1 var(--np-font-display);color:var(--np-void);border:1px solid transparent}.np-theme-editor__swatch--dark{background:var(--np-void);border-width:2px;border-style:solid}.np-theme-editor__actions{display:flex;align-items:center}.np-font-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:20px}body.np-body button.np-font-card,.np-screen button.np-font-card{display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;padding:14px!important;background:var(--np-carbon)!important;border:1px solid var(--np-line)!important;border-radius:0!important;text-align:left!important;cursor:pointer!important;transition:all .15s ease!important;box-shadow:none!important;min-height:0!important;height:auto!important;width:100%!important;position:relative!important}body.np-body button.np-font-card:before,body.np-body button.np-font-card:after{display:none!important}body.np-body button.np-font-card:hover{border-color:var(--np-muted)!important;transform:translateY(-2px)!important}body.np-body button.np-font-card--active{border-color:var(--np-acid)!important;box-shadow:0 0 0 1px var(--np-acid)!important;background:var(--np-panel)!important}.np-font-card__header{display:flex;align-items:center;justify-content:space-between;width:100%;margin-bottom:4px}.np-font-card__title{font-size:15px;font-weight:700;color:var(--np-cream)}.np-font-card__check{color:var(--np-acid)}.np-font-card__vibe{font-size:10px;color:var(--np-acid);letter-spacing:.05em;margin-bottom:8px;text-transform:uppercase}.np-font-card__preview{font-size:10px;color:var(--np-muted);background:var(--np-well);padding:6px 8px;border:1px solid var(--np-line);width:100%;box-sizing:border-box}.np-btn--ghost{background:transparent!important;border:1px solid var(--np-line)!important;color:var(--np-muted)!important;box-shadow:none!important}.np-btn--ghost:before,.np-btn--ghost:after{display:none!important}.np-btn--ghost:hover{border-color:var(--np-cream)!important;color:var(--np-cream)!important}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-primary: #ffffff;--bg-secondary: #fafafa;--bg-tertiary: #f8f9fa;--text-primary: #333333;--text-secondary: #666666;--text-muted: #888888;--border-color: #e0e0e0;--border-light: #f0f0f0;--shadow-light: rgba(0, 0, 0, .1);--shadow-medium: rgba(0, 0, 0, .15);--accent-primary: #007bff;--accent-hover: #0056b3;--accent-secondary: #6c757d;--accent-secondary-hover: #545b62;--input-bg: #ffffff;--input-border: #e0e0e0;--input-focus: #007bff;--card-bg: #ffffff;--card-shadow: 0 2px 4px rgba(0, 0, 0, .1);--header-bg: #ffffff;--header-border: #e0e0e0;--header-shadow: 0 1px 3px rgba(0, 0, 0, .1)}[data-theme=dark]{--bg-primary: #1a1a1a;--bg-secondary: #2d2d2d;--bg-tertiary: #3a3a3a;--text-primary: #ffffff;--text-secondary: #e0e0e0;--text-muted: #b0b0b0;--border-color: #404040;--border-light: #505050;--shadow-light: rgba(0, 0, 0, .3);--shadow-medium: rgba(0, 0, 0, .4);--accent-primary: #4dabf7;--accent-hover: #74c0fc;--accent-secondary: #868e96;--accent-secondary-hover: #adb5bd;--input-bg: #2d2d2d;--input-border: #404040;--input-focus: #4dabf7;--card-bg: #2d2d2d;--card-shadow: 0 2px 8px rgba(0, 0, 0, .3);--header-bg: #2d2d2d;--header-border: #404040;--header-shadow: 0 1px 3px rgba(0, 0, 0, .3)}*{box-sizing:border-box}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background:var(--color-background);color:var(--color-text)}.loading-spinner{width:40px;height:40px;border:4px solid var(--color-border);border-top:4px solid var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app-wrapper{min-height:100vh;display:flex;flex-direction:column}.app-footer{margin-top:auto;padding:20px 0;background:var(--color-background);border-top:1px solid var(--color-border);text-align:center}.footer-content{max-width:1200px;margin:0 auto;padding:0 20px}.social-links{display:flex;justify-content:center;gap:16px;margin-bottom:12px}.social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--color-background);border:1px solid var(--color-border);color:var(--color-text);text-decoration:none;transition:all .3s ease;font-size:20px}.social-link:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary);transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.social-link.linkedin:hover{background:#0077b5;border-color:#0077b5}.social-link.github:hover{background:#333;border-color:#333}.footer-text{color:var(--text-secondary);font-size:14px;font-style:italic}.footer-text p{margin:0}body{margin:0;padding:0;min-height:100vh;background-color:var(--bg-secondary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease}h1,h2,h3,h4,h5,h6{margin:0 0 16px;font-weight:600;color:var(--text-primary);transition:color .3s ease}h2{font-size:1.5rem;margin-bottom:20px}h3{font-size:1.25rem;margin-bottom:12px}p{margin:0 0 12px;color:var(--text-secondary);transition:color .3s ease}input{width:100%;padding:12px 16px;border:1px solid var(--input-border);border-radius:8px;font-size:16px;font-family:inherit;background-color:var(--input-bg);color:var(--text-primary);transition:all .3s ease}input:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #4dabf71a}input::placeholder{color:var(--text-muted)}.form-row{display:flex;gap:16px;margin-bottom:16px}.form-group{flex:1}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:var(--text-primary);font-size:14px}.form-select{width:100%;padding:12px 16px;border:1px solid var(--input-border);border-radius:8px;font-size:16px;font-family:inherit;background-color:var(--input-bg);color:var(--text-primary);transition:all .3s ease;cursor:pointer}.form-select:focus{outline:none;border-color:var(--input-focus);box-shadow:0 0 0 3px #4dabf71a}.form-select option{background-color:var(--input-bg);color:var(--text-primary)}button{border-radius:8px;border:1px solid var(--border-color);padding:12px 20px;font-size:16px;font-weight:500;font-family:inherit;background-color:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:all .3s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-height:44px}button:hover{background-color:var(--bg-tertiary);border-color:var(--accent-primary);color:var(--accent-primary)}button:active{transform:translateY(1px)}button.primary{background-color:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}button.primary:hover{background-color:var(--accent-hover);border-color:var(--accent-hover);color:#fff}button.secondary{background-color:var(--accent-secondary);color:#fff;border-color:var(--accent-secondary)}button.secondary:hover{background-color:var(--accent-secondary-hover);border-color:var(--accent-secondary-hover);color:#fff}.theme-toggle{background:transparent;border:1px solid var(--border-color);border-radius:50%;width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;color:var(--text-primary);transition:all .3s ease;margin-right:8px}.theme-toggle:hover{background-color:var(--bg-tertiary);border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.05)}.theme-toggle:active{transform:scale(.95)}.card{background-color:var(--card-bg);border-radius:8px;padding:16px;box-shadow:var(--card-shadow);border:1px solid var(--border-color);margin-bottom:16px;transition:all .3s ease}.card-header{font-weight:600;color:var(--text-primary);margin-bottom:8px;transition:color .3s ease}.card-content{color:var(--text-secondary);line-height:1.4;transition:color .3s ease}.container{max-width:600px;margin:0 auto;display:flex;flex-direction:column;gap:10px;padding:20px}.page-header{position:relative;z-index:10;display:flex;flex-direction:column;justify-content:space-between;align-items:center;margin-bottom:24px;padding:16px 20px;background-color:#fff9;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.3);border-radius:16px;box-shadow:0 2px 16px #0000000f;transition:all .3s ease}.page-header:before{content:"";position:absolute;inset:0;border-radius:16px;border:1px solid rgba(255,255,255,.4);pointer-events:none;z-index:-1}[data-theme=dark] .page-header{background-color:#2d2d2d1a;border:1px solid rgba(255,255,255,.1)}[data-theme=dark] .page-header:before{border:1px solid rgba(255,255,255,.2)}.page-title{margin:0;font-size:1.75rem;font-weight:600}.page-subtitle{margin:8px 0 0;font-size:1rem;color:var(--text-secondary);font-weight:400}.action-buttons{display:flex;flex-direction:column;gap:9px;align-items:center}.edit-target-btn{padding:8px 12px;border-radius:6px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color)}.edit-target-btn:hover{background:var(--bg-secondary);border-color:var(--accent-primary);color:var(--accent-primary)}[data-theme=dark] .edit-target-btn{background:#101114;color:#fff;border:1px solid #2a2d33}[data-theme=dark] .edit-target-btn:hover{background:#15181d;border-color:#3a3f47;color:#fff}.app-header{background-color:var(--header-bg);border-bottom:none;padding:16px 20px;display:flex;justify-content:space-between;align-items:center;box-shadow:none;transition:all .3s ease;position:relative;z-index:20}.header-left,.header-right{display:flex;align-items:center;gap:8px}.resync-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.resync-select{padding:8px 10px;border:1px solid var(--input-border);border-radius:8px;background:var(--input-bg);color:var(--text-primary);font-size:14px;min-width:140px;cursor:pointer}.resync-wrapper{position:relative}.resync-dropdown{position:absolute;top:110%;right:0;background:var(--card-bg);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 20px #0000001f;padding:12px;min-width:220px;z-index:50;display:flex;flex-direction:column;gap:10px}.resync-dropdown label{display:block;font-size:12px;color:var(--text-secondary);margin-bottom:4px}.resync-dropdown-group{display:flex;flex-direction:column;gap:4px}.resync-actions{display:flex;justify-content:flex-end}.resync-actions .primary{padding:8px 12px}.login-header{background-color:var(--header-bg);border-bottom:none;padding:16px 20px;box-shadow:none;transition:all .3s ease}.login-header-content{max-width:600px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.login-header-content h1{margin:0;font-size:1.5rem;font-weight:600;color:var(--text-primary)}.captcha-container{margin-bottom:20px}.captcha-loading{width:150px;height:50px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:14px;margin-bottom:12px;transition:all .3s ease}.captcha-image{width:150px;height:50px;border:1px solid var(--border-color);border-radius:8px;object-fit:contain;margin-bottom:12px;transition:border-color .3s ease;background-color:#fff}.captcha-input{width:200px!important;margin-top:8px}.timetable-day{margin-bottom:32px}.timetable-day h3{color:var(--text-primary);font-size:1.25rem;margin-bottom:16px;padding-bottom:8px;border-bottom:2px solid var(--border-light);transition:all .3s ease}.class-block{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:16px;margin-bottom:12px;box-shadow:var(--card-shadow);transition:all .3s ease}.class-name{font-weight:600;color:var(--text-primary);margin-bottom:4px;transition:color .3s ease}.class-time{color:var(--text-secondary);font-size:14px;transition:color .3s ease}.class-card{position:relative;z-index:10;background-color:#fff9;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.3);border-radius:16px;padding:24px;margin-bottom:20px;box-shadow:0 4px 24px #00000014;transition:all .3s ease}.class-card:before{content:"";position:absolute;inset:0;border-radius:16px;border:1px solid rgba(255,255,255,.4);pointer-events:none;z-index:-1}[data-theme=dark] .class-card{background-color:#2d2d2d1a;border:1px solid rgba(255,255,255,.1);box-shadow:0 4px 24px #0003}[data-theme=dark] .class-card:before{border:1px solid rgba(255,255,255,.2)}.class-card:hover{box-shadow:0 8px 32px #0000001a;transform:translateY(-2px)}[data-theme=dark] .class-card:hover{box-shadow:0 8px 32px #0000004d}.class-card h2{margin-bottom:12px;font-size:1.25rem;color:var(--text-primary);transition:color .3s ease}.class-card-content{font-size:1.1rem;color:var(--text-secondary);line-height:1.4;transition:color .3s ease}@media (max-width: 768px){.container{padding:16px}.theme-toggle{padding:0-px;width:16px;height:16px;border-radius:50%}.page-header{flex-direction:column;align-items:flex-start;gap:16px}.action-buttons{width:100%;justify-content:space-between}.action-buttons button{flex:1;margin:0 4px}.action-buttons button:first-child{margin-left:0}.action-buttons button:last-child{margin-right:0}button.full-width-mobile{width:100%;margin-top:16px}button+button{margin-top:16px}.captcha-input{width:100%!important}.app-header{padding:12px 16px}.app-header button{padding:8px 12px;font-size:14px}.theme-toggle{width:44px;height:44px}}@media (max-width: 480px){.container{padding:12px}h2{font-size:1.25rem}.class-card{padding:16px}.class-block{padding:12px}.header-right{gap:4px;display:flex;align-items:center}.resync-btn{display:flex;align-items:center;margin:0}.resync-wrapper{width:100%}.resync-dropdown{right:0;left:auto;min-width:100%}.resync-controls{width:100%;justify-content:flex-end;gap:6px}.resync-select{min-width:130px;flex:1}.form-row{flex-direction:column;gap:12px}}.subjects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:24px}.subject-card{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;padding:16px;box-shadow:var(--card-shadow);transition:all .3s ease}.subject-code{font-weight:600;color:var(--text-primary);margin-bottom:12px;font-size:1.1rem;word-break:break-all}.subject-name{font-size:1rem;color:var(--text-secondary);margin-bottom:12px;min-height:24px;display:flex;align-items:center}.subject-name-input{width:100%;margin-bottom:12px;text-transform:uppercase}.subject-actions{display:flex;gap:8px}.subject-actions button{flex:1;padding:8px 12px;font-size:14px;min-height:auto}.subject-edit,.subject-display{margin-top:8px}button.small{padding:6px 12px;font-size:12px;min-height:32px}.page-actions{margin-top:24px;text-align:center}@media (max-width: 768px){.subjects-grid{grid-template-columns:1fr;gap:12px}.subject-card{padding:12px}.subject-actions{flex-direction:column}.subject-actions button{margin-bottom:4px}}.today-subjects{display:flex;flex-direction:column;gap:8px}.subject-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border-light)}.subject-item:last-child{border-bottom:none}.subject-display-name{font-weight:600;color:var(--text-primary);font-size:1rem}.subject-original-code{color:var(--text-muted);font-size:.9rem;font-style:italic}.loading{color:var(--text-muted);font-style:italic;transition:color .3s ease}.text-center{text-align:center}.mb-16{margin-bottom:16px}.mb-20{margin-bottom:20px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.toast{position:fixed;top:20px;right:20px;z-index:1000;max-width:400px;min-width:300px;transform:translate(100%);opacity:0;transition:all .3s ease}.toast-visible{transform:translate(0);opacity:1}.toast-content{display:flex;align-items:center;gap:12px;padding:16px 20px;border-radius:8px;box-shadow:0 4px 12px #00000026;border:1px solid var(--border-color);background-color:var(--card-bg);color:var(--text-primary)}.toast-success{border-left:4px solid #28a745}.toast-error{border-left:4px solid #dc3545}.toast-info{border-left:4px solid var(--accent-primary)}.toast-icon{flex-shrink:0;color:var(--text-primary)}.toast-success .toast-icon{color:#28a745}.toast-error .toast-icon{color:#dc3545}.toast-info .toast-icon{color:var(--accent-primary)}.toast-message{flex:1;font-weight:500;line-height:1.4}.toast-close{flex-shrink:0;background:transparent;border:none;padding:4px;border-radius:4px;color:var(--text-muted);cursor:pointer;transition:all .2s ease;min-height:auto}.toast-close:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}@media (max-width: 768px){.toast{top:10px;right:10px;left:10px;max-width:none;min-width:auto}.toast-content{padding:14px 16px}}*{transition:background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease}.button-container{display:flex;flex-direction:column;gap:20px;margin-top:24px;position:relative;z-index:1;will-change:transform;transform:translateZ(0)}.button-container button{position:relative;z-index:10;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-radius:16px;border:1px solid rgba(255,255,255,.3);box-shadow:0 2px 12px #00000014;transition:all .3s ease;opacity:1!important;visibility:visible!important}.button-container button:before{content:"";position:absolute;inset:0;border-radius:16px;border:1px solid rgba(255,255,255,.4);pointer-events:none;z-index:-1}.button-container button:not(.primary):not(.secondary){background-color:#fff9}.button-container button.primary{background-color:#007bffe6;border:1px solid rgba(255,255,255,.3)}.button-container button.secondary{background-color:#6c757de6;border:1px solid rgba(255,255,255,.3)}.button-container button:hover{transform:translateY(-1px);box-shadow:0 4px 16px #0000001f}[data-theme=dark] .button-container button{border:1px solid rgba(255,255,255,.1);box-shadow:0 2px 12px #0000004d}[data-theme=dark] .button-container button:before{border:1px solid rgba(255,255,255,.2)}@media (min-width: 768px){.button-container{gap:24px}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-state-content h2{margin-bottom:16px;color:var(--text-secondary)}.empty-state-content p{margin-bottom:32px;color:var(--text-muted)}.maddys-list{display:flex;flex-direction:column;gap:20px;margin-bottom:32px}.maddy-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:20px;box-shadow:var(--card-shadow);transition:all .2s ease}.maddy-card:hover{box-shadow:0 4px 12px var(--shadow-medium);transform:translateY(-2px)}.maddy-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.maddy-header h3{margin:0;font-size:1.2rem;font-weight:600;color:var(--text-primary)}.maddy-actions{display:flex;gap:8px}.action-btn{background:none;border:none;font-size:1.2rem;padding:8px;border-radius:8px;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;min-width:40px;height:40px}.action-btn:hover{background:var(--bg-tertiary);transform:scale(1.1)}.action-btn.delete:hover{background:#ffebee;color:#d32f2f}[data-theme=dark] .action-btn.delete:hover{background:#3d1f1f;color:#ff6b6b}.maddy-info{margin-bottom:16px}.semester-info{margin:0;font-size:.9rem;color:var(--text-muted)}.class-info{display:flex;flex-direction:column;gap:8px}.class-item{display:flex;justify-content:space-between;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--border-light)}.class-item:last-child{border-bottom:none}.class-label{font-weight:500;color:var(--text-secondary);min-width:80px;text-align:left}.class-value{color:var(--text-primary);text-align:right;flex:1;margin-left:16px}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content{background:var(--card-bg);border-radius:12px;box-shadow:0 8px 32px var(--shadow-medium);max-width:500px;width:100%;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-color)}.modal-header h2{margin:0;font-size:1.3rem;color:var(--text-primary)}.close-btn{background:none;border:none;font-size:1.5rem;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:4px;transition:all .2s ease}.close-btn:hover{color:var(--text-primary);background:var(--bg-tertiary)}.modal-body{padding:24px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.captcha-image-container{width:150px;height:50px;margin-bottom:8px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-color);background-color:var(--bg-tertiary);border-radius:4px;overflow:hidden}[data-theme=dark] .captcha-image-container{background-color:#fff}@media (max-width: 768px){.maddy-header{flex-direction:column;align-items:flex-start;gap:12px}.maddy-actions{align-self:flex-end}.class-item{flex-direction:column;gap:4px}.class-label{min-width:auto}.class-value{margin-left:0;text-align:left}.modal-content{margin:20px;max-height:calc(100vh - 40px)}.modal-actions{flex-direction:column}.modal-actions button{width:100%}}.attendance-container{display:flex;flex-direction:column;gap:20px}.attendance-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:12px;padding:20px;box-shadow:var(--card-shadow)}.course-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-light)}.course-name{font-size:18px;font-weight:600;color:var(--text-primary);margin:0;flex:1}.course-code{font-size:14px;color:var(--text-muted);background:var(--bg-tertiary);padding:4px 8px;border-radius:6px;margin-left:12px}.total-attendance-box{display:flex;justify-content:space-between;align-items:center;padding:12px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-light);margin-bottom:16px}.total-info{display:flex;flex-direction:column;gap:4px}.total-badge{background:var(--accent-primary);color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;text-align:center;min-width:60px}.total-label{font-size:14px;font-weight:500;color:var(--text-primary)}.total-stats{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.total-percentage{font-size:18px;font-weight:700}.total-details{font-size:12px;color:var(--text-secondary)}.sections-container{display:flex;flex-direction:column;gap:12px}.section-item{display:flex;justify-content:space-between;align-items:center;padding:12px;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-light)}.section-info{display:flex;align-items:center;gap:12px}.ltps-badge{background:var(--accent-primary);color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;min-width:24px;text-align:center}.section-name{font-size:14px;color:var(--text-primary);font-weight:500}.attendance-stats{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.percentage{font-size:18px;font-weight:700}.attendance-details{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:12px;color:var(--text-secondary)}.absent-count{color:var(--text-muted)}.grades-back-nav{display:flex;justify-content:center;margin-top:16px;padding:0 12px}.grades-back-btn{min-width:180px;max-width:100%}.grades-view-toggle{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%;padding:4px;margin-bottom:20px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:14px;box-sizing:border-box}.grades-view-toggle-slider{position:absolute;top:4px;bottom:4px;left:4px;width:calc((100% - 8px)/2);border-radius:10px;background:var(--accent-primary);box-shadow:0 2px 10px #4dabf759;transition:transform .22s ease;pointer-events:none;z-index:0}.grades-view-toggle-slider.is-right{transform:translate(100%)}.grades-view-toggle .grades-view-toggle-btn{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:44px;padding:12px 6px;border:none;border-radius:10px;background:transparent;color:var(--text-secondary);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;box-shadow:none;white-space:nowrap;transition:color .2s ease}.grades-view-toggle .grades-view-toggle-btn+.grades-view-toggle-btn{margin-top:0}.grades-view-toggle .grades-view-toggle-btn:hover{background:transparent;border:none;color:var(--text-primary)}.grades-view-toggle .grades-view-toggle-btn.is-active{background:transparent;border:none;color:#fff;box-shadow:none}.grades-view-toggle .grades-view-toggle-btn.is-active:hover{background:transparent;color:#fff}.grades-gpa-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:24px 20px;margin-bottom:20px;background:var(--card-bg);border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--card-shadow)}.grades-gpa-badge{display:inline-block;padding:4px 12px;border-radius:999px;background:var(--accent-primary);color:#fff;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.grades-gpa-value{margin:12px 0 8px;font-size:clamp(2.5rem,10vw,3.25rem);font-weight:700;line-height:1;color:var(--accent-primary)}.grades-gpa-subtitle{margin:0;font-size:13px;line-height:1.4;color:var(--text-secondary);max-width:320px}.grades-semester-card{margin-bottom:20px;padding:16px;overflow:visible;background:var(--card-bg);border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--card-shadow)}.grades-stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}.grades-stat-item{padding:10px 12px;background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:10px}.grades-stat-label{display:block;margin-bottom:4px;font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.grades-stat-value{font-size:17px;font-weight:700;color:var(--text-primary)}.grades-course-meta{margin-bottom:14px;font-size:13px;color:var(--text-secondary)}.grades-more-btn{width:100%;padding:10px 14px;border:1px solid var(--border-color);border-radius:10px;background:var(--bg-secondary);color:var(--text-primary);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .2s ease,border-color .2s ease}.grades-more-btn:hover{background:var(--bg-tertiary);border-color:var(--accent-primary)}.semester-picker{position:relative;width:100%}.semester-picker-label{display:block;margin-bottom:10px;font-size:14px;font-weight:600;color:var(--text-primary);letter-spacing:.02em}.semester-picker-control{position:relative}.semester-picker-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:14px 16px;border:1px solid var(--border-color);border-radius:12px;background:var(--bg-secondary);color:var(--text-primary);font-size:15px;font-weight:500;font-family:inherit;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;text-align:left}.semester-picker-trigger:hover{border-color:var(--accent-primary);background:var(--card-bg)}.semester-picker.is-open .semester-picker-trigger{border-color:var(--accent-primary);box-shadow:0 0 0 3px #4dabf726;border-bottom-left-radius:0;border-bottom-right-radius:0}.semester-picker-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.semester-picker-chevron{flex-shrink:0;width:20px;height:20px;color:var(--text-muted);transition:transform .2s ease,color .2s ease}.semester-picker.is-open .semester-picker-chevron{transform:rotate(180deg);color:var(--accent-primary)}.semester-picker-menu{position:absolute;top:100%;left:0;right:0;z-index:50;margin:0;padding:6px;list-style:none;background:var(--card-bg);border:1px solid var(--accent-primary);border-top:none;border-radius:0 0 12px 12px;box-shadow:var(--card-shadow),0 8px 24px #0003;max-height:240px;overflow-y:auto}.semester-picker-option{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:12px 14px;border:none;border-radius:8px;background:transparent;color:var(--text-primary);font-size:14px;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s ease,color .15s ease}.semester-picker-option:hover{background:var(--bg-tertiary)}.semester-picker-option.is-selected{background:#4dabf71f;color:var(--accent-primary);font-weight:600}.semester-picker-option-text{flex:1;min-width:0}.semester-picker-check{flex-shrink:0;font-size:14px;font-weight:700;color:var(--accent-primary)}@media (max-width: 768px){.course-header{flex-direction:column;align-items:flex-start;gap:8px}.course-code{margin-left:0}.total-attendance-box{flex-direction:column;align-items:flex-start;gap:12px}.total-stats{align-items:flex-start;width:100%}.section-item{flex-direction:column;align-items:flex-start;gap:8px}.attendance-stats{align-items:flex-start;width:100%}.attendance-details{align-items:flex-start}}.calculator-btn{padding:12px;border:1px solid var(--border-color);border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;background:var(--bg-secondary);color:var(--text-primary)}.calculator-btn:hover{background:var(--bg-tertiary);border-color:var(--accent-primary)}.calculator-btn.number{background:var(--card-bg)}.calculator-btn.operation{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.calculator-btn.operation:hover{background:var(--accent-hover)}.calculator-btn.equals{background:var(--accent-secondary);color:#fff;border-color:var(--accent-secondary)}.calculator-btn.equals:hover{background:var(--accent-secondary-hover)}.calculator-btn.special{background:#ff6b6b;color:#fff;border-color:#ff6b6b}.calculator-btn.special:hover{background:#ff5252}.calculator-btn.secondary{background:var(--bg-tertiary);color:var(--text-secondary)}.calculator-btn.secondary:hover{background:var(--border-color)}.calculator-icon-btn{position:fixed;bottom:20px;right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent-primary);color:#fff;border:none;box-shadow:0 4px 12px #0000004d;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:24px;transition:all .3s ease;z-index:100}.calculator-icon-btn:hover{background:var(--accent-hover);transform:scale(1.1);box-shadow:0 6px 16px #0006}.calculator-icon-btn:active{transform:scale(.95)}.export-icon-btn{position:fixed;bottom:20px;right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent-primary);color:#fff;border:none;box-shadow:0 4px 12px #0000004d;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;z-index:100}.export-icon-btn:hover{background:var(--accent-hover);transform:scale(1.1);box-shadow:0 6px 16px #0006}.export-icon-btn:active{transform:scale(.95)}.export-icon-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.compare-icon-btn{position:fixed;bottom:20px;right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent-primary);color:#fff;border:none;box-shadow:0 4px 12px #0000004d;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;z-index:100}.compare-icon-btn:hover{background:var(--accent-hover);transform:scale(1.1);box-shadow:0 6px 16px #0006}.compare-icon-btn:active{transform:scale(.95)}.compare-modal-overlay{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.compare-modal-content{background:var(--card-bg);border-radius:12px;box-shadow:0 8px 32px #0003;max-width:90vw;max-height:90vh;width:100%;max-width:1000px;display:flex;flex-direction:column;overflow:hidden}.compare-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.compare-day-select{padding:8px 12px;border:1px solid var(--input-border);border-radius:6px;background:var(--input-bg);color:var(--text-primary);font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease}.compare-day-select:focus{outline:none;border-color:var(--input-focus)}.compare-timetables-container{display:flex;gap:0;min-height:400px;max-height:calc(90vh - 60px)}.compare-timetable-panel{flex:1;display:flex;flex-direction:column;border-right:1px solid var(--border-color);overflow:hidden}.compare-timetable-panel:last-child{border-right:none}.compare-panel-label{padding:10px 16px;background:var(--bg-tertiary);border-bottom:1px solid var(--border-color);font-size:.9rem;font-weight:600;color:var(--text-primary)}.compare-maddy-select{width:100%;padding:8px 10px;border:1px solid var(--input-border);border-radius:6px;background:var(--input-bg);color:var(--text-primary);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease}.compare-maddy-select:focus{outline:none;border-color:var(--input-focus)}.compare-timetable-content{flex:1;overflow-y:auto;padding:16px;background:var(--bg-primary)}.compare-day-timetable{display:flex;flex-direction:column;gap:8px}.compare-class-block{display:flex;align-items:center;gap:12px;padding:10px 12px;background:var(--bg-secondary);border-radius:6px;border:1px solid var(--border-light)}.compare-class-time{font-size:.85rem;color:var(--text-secondary);font-weight:500;min-width:90px;flex-shrink:0}.compare-class-name{font-size:.9rem;color:var(--text-primary);font-weight:500;flex:1}@media (max-width: 768px){.compare-timetables-container{flex-direction:column;height:calc(95vh - 80px)}.compare-timetable-panel{border-right:none;border-bottom:1px solid var(--border-color);max-height:50%}.compare-timetable-panel:last-child{border-bottom:none}.compare-modal-content{max-width:100vw;max-height:100vh;border-radius:0}.compare-modal-overlay{padding:0}}.feedback-fab{position:fixed;bottom:20px;right:20px;width:56px;height:56px;border-radius:50%;background:var(--accent-primary);color:#fff;border:none;box-shadow:0 4px 12px #0000004d;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:24px;transition:all .3s ease;z-index:100}.feedback-fab:hover{background:var(--accent-hover);transform:scale(1.1);box-shadow:0 6px 16px #0006}.feedback-fab:active{transform:scale(.95)}.timetable-container{display:flex;flex-direction:column;gap:24px;margin-bottom:32px}.no-classes{text-align:center;color:var(--text-muted);font-style:italic;padding:20px}.contributors-section{max-width:600px;margin:32px auto 0;padding:16px}.contributors-title{text-align:center;margin-bottom:6px}.contributors-updated{text-align:center;color:var(--text-secondary);font-size:.95rem;margin-bottom:12px}.contributors-updated-author{color:var(--text-primary);font-weight:600}.contributors-list{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap}.contributor-link{position:relative;display:inline-flex;border-radius:50%}.contributor-avatar{width:56px;height:56px;border-radius:50%;border:1px solid var(--border-color);background:var(--card-bg);box-shadow:var(--card-shadow);object-fit:cover}.contributor-tooltip{position:absolute;left:50%;transform:translate(-50%) translateY(6px);bottom:-76px;min-width:200px;max-width:260px;background:#fffc;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--text-primary);border:1px solid var(--border-color);border-radius:10px;padding:10px 12px;box-shadow:0 8px 24px var(--shadow-light);opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease}[data-theme=dark] .contributor-tooltip{background:#1e1e1eb3}.contributor-link:hover .contributor-tooltip{opacity:1;transform:translate(-50%) translateY(0)}.contributor-tooltip-name{font-weight:700;margin-bottom:4px}.contributor-tooltip-msg{font-size:.9rem;color:var(--text-secondary)}.contributor-tooltip-time{font-size:.8rem;color:var(--text-muted);margin-top:4px}.contributors-cta{margin-top:14px;display:flex;justify-content:center}.contributors-cta-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border:1px solid var(--border-color);border-radius:999px;background:var(--bg-secondary);color:var(--text-primary);text-decoration:none;box-shadow:var(--card-shadow)}.contributors-cta-btn:hover{background:var(--bg-tertiary);border-color:var(--accent-primary);color:var(--accent-primary)}.skeleton-avatar{background:var(--bg-tertiary);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.global-ads-container{display:none;position:fixed;top:150px;left:50%;width:100%;max-width:600px;transform:translate(-50%);z-index:10;pointer-events:none}@media (min-width: 1024px){.global-ads-container{display:block}}.global-ad{position:absolute;width:160px;pointer-events:auto}.global-ad.left-ad{right:calc(100% + 20px)}.global-ad.right-ad{left:calc(100% + 20px)}.ad-wrapper{position:relative;width:160px;height:600px;background-color:var(--card-bg, #f0f0f0);border:1px dashed var(--border-color, #ccc);border-radius:8px;overflow:hidden;display:flex;justify-content:center;align-items:center}.ad-placeholder{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center;padding:10px;z-index:1;color:var(--text-secondary, #666);font-size:.9rem;font-weight:500;pointer-events:none}.ad-iframe{position:relative;z-index:2;border:none;background:transparent}
