@import "https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap";@layer reset{*,:before,:after{box-sizing:border-box;margin:0;padding:0}img{max-width:100%;height:auto;display:block}button,input,select,textarea{font:inherit;color:inherit;background:0 0;border:none}a{color:inherit;text-decoration:none}}@layer base{:root{--font-heading:"Fredoka", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--color-bg-base:oklch(98% .01 240);--color-bg-surface:oklch(100% 0 0);--color-border:oklch(92% .01 240);--color-text-main:oklch(25% .03 260);--color-text-muted:oklch(48% .03 260);--color-accent-purple:oklch(62% .22 285);--color-accent-orange:oklch(72% .18 45);--color-accent-teal:oklch(75% .15 170);--color-accent-yellow:oklch(85% .15 80);--color-accent-purple-hover:oklch(55% .22 285);--color-accent-orange-hover:oklch(65% .18 45);--shadow-sm:0 2px 8px oklch(20% .05 260/.04);--shadow-md:0 8px 24px oklch(20% .05 260/.06);--shadow-lg:0 16px 40px oklch(20% .05 260/.08);--focus-ring:3px solid var(--color-accent-purple);--focus-offset:2px}body{font-family:var(--font-body);color:var(--color-text-main);background-color:var(--color-bg-base);min-height:100dvh;line-height:1.5;overflow-x:hidden}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-offset)}}@layer layout{.app-layout{flex-direction:column;min-height:100dvh;display:flex}.content-container{flex-direction:column;flex-grow:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem 1.5rem;display:flex}}@layer components{.navbar{background-color:var(--color-bg-surface);border-bottom:1px solid var(--color-border);z-index:100;box-shadow:var(--shadow-sm);padding:1rem 1.5rem;position:sticky;top:0}.navbar .nav-container{justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;display:flex}.navbar .brand-logo{font-family:var(--font-heading);color:var(--color-accent-purple);cursor:pointer;align-items:center;gap:.75rem;font-size:1.5rem;font-weight:700;display:flex}.navbar .brand-logo .logo-icon{background:linear-gradient(135deg, var(--color-accent-purple), var(--color-accent-orange));color:#fff;border-radius:10px;place-items:center;width:36px;height:36px;font-weight:700;display:grid;box-shadow:0 4px 10px oklch(62% .22 285/.2)}.navbar .nav-links{align-items:center;gap:1.5rem;display:flex}.navbar .nav-item{font-family:var(--font-heading);color:var(--color-text-muted);cursor:pointer;font-weight:600;transition:color .2s}.navbar .nav-item:hover,.navbar .nav-item.active{color:var(--color-accent-purple)}.navbar .user-profile-btn{border:1px solid var(--color-border);background-color:var(--color-bg-base);cursor:pointer;border-radius:99px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:500;transition:background-color .2s;display:flex}.navbar .user-profile-btn:hover{background-color:oklch(95% .01 240)}.card{background-color:var(--color-bg-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);border-radius:20px;padding:1.75rem;transition:transform .2s,box-shadow .2s}.card.interactive:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.btn{cursor:pointer;font-family:var(--font-heading);border-radius:12px;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-weight:600;transition:all .2s;display:inline-flex}.btn.btn-primary{background-color:var(--color-accent-purple);color:#fff;box-shadow:0 4px 12px oklch(62% .22 285/.15)}.btn.btn-primary:hover{background-color:var(--color-accent-purple-hover);transform:translateY(-1px)}.btn.btn-secondary{background-color:var(--color-bg-base);border:1px solid var(--color-border);color:var(--color-text-main)}.btn.btn-secondary:hover{background-color:oklch(94% .01 240)}.btn.btn-orange{background-color:var(--color-accent-orange);color:#fff}.btn.btn-orange:hover{background-color:var(--color-accent-orange-hover);transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.form-group{flex-direction:column;gap:.5rem;width:100%;margin-bottom:1.25rem;display:flex}.form-group label{font-family:var(--font-heading);color:var(--color-text-main);font-size:.95rem;font-weight:600}.form-group .form-input{border:2px solid var(--color-border);background-color:var(--color-bg-base);width:100%;color:var(--color-text-main);border-radius:12px;padding:.85rem 1.1rem;font-size:1rem;transition:border-color .2s,box-shadow .2s}.form-group .form-input:focus{border-color:var(--color-accent-purple);outline:none;box-shadow:0 0 0 3px oklch(62% .22 285/.12)}.form-group .form-input::placeholder{color:var(--color-text-muted)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background-color:#0006;place-items:center;padding:1.5rem;animation:.2s fadeIn;display:grid;position:fixed;inset:0}.modal-overlay .modal-content{background-color:var(--color-bg-surface);border:1px solid var(--color-border);width:100%;max-width:550px;box-shadow:var(--shadow-lg);border-radius:24px;padding:2rem;animation:.25s cubic-bezier(.34,1.56,.64,1) scaleUp;position:relative}}@layer views{.auth-view{justify-content:center;align-items:center;min-height:70vh;display:flex}.auth-view .auth-card{text-align:center;flex-direction:column;gap:1.5rem;width:100%;max-width:450px;display:flex}.auth-view .auth-card .auth-title{font-family:var(--font-heading);background:linear-gradient(135deg, var(--color-accent-purple), var(--color-accent-orange));-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:2rem;font-weight:700}.auth-view .auth-card .auth-toggle{color:var(--color-text-muted);font-size:.9rem}.auth-view .auth-card .auth-toggle span{color:var(--color-accent-purple);cursor:pointer;font-weight:600}.auth-view .auth-card .auth-toggle span:hover{text-decoration:underline}.dashboard-grid{grid-template-columns:2fr 1fr;gap:2rem;display:grid}@media (width<=900px){.dashboard-grid{grid-template-columns:1fr}}.main-column,.sidebar-column{flex-direction:column;gap:2rem;display:flex}.quote-widget{color:var(--color-text-main);background:linear-gradient(135deg,oklch(62% .22 285/.06),oklch(72% .18 45/.06));border:1px dashed oklch(62% .22 285/.2);border-radius:18px;flex-direction:column;gap:.5rem;padding:1.25rem 1.5rem;font-style:italic;display:flex}.quote-widget .quote-author{font-family:var(--font-heading);color:var(--color-accent-purple);text-align:right;font-size:.9rem;font-style:normal;font-weight:600}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1.25rem;display:grid}.stats-grid .stat-item{text-align:center;flex-direction:column;align-items:center;gap:.25rem;display:flex}.stats-grid .stat-item .stat-icon{font-size:2rem}.stats-grid .stat-item .stat-number{font-family:var(--font-heading);color:var(--color-text-main);font-size:1.75rem;font-weight:700}.stats-grid .stat-item .stat-label{text-transform:uppercase;color:var(--color-text-muted);letter-spacing:.05em;font-size:.8rem;font-weight:600}.bookshelf-section{flex-direction:column;gap:1.5rem;display:flex}.bookshelf-section .bookshelf-tabs{border-bottom:2px solid var(--color-border);gap:.75rem;padding-bottom:.5rem;display:flex}.bookshelf-section .bookshelf-tabs .tab-btn{cursor:pointer;font-family:var(--font-heading);color:var(--color-text-muted);border-radius:8px;padding:.5rem 1rem;font-weight:600;transition:all .2s}.bookshelf-section .bookshelf-tabs .tab-btn.active{color:var(--color-accent-purple);background-color:oklch(62% .22 285/.08)}.bookshelf-section .books-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1.5rem;display:grid}.bookshelf-section .book-card{cursor:pointer;flex-direction:column;gap:.75rem;display:flex;position:relative}.bookshelf-section .book-card .book-cover-wrapper{aspect-ratio:2/3;border:1px solid var(--color-border);box-shadow:var(--shadow-sm);background-color:var(--color-bg-base);border-radius:12px;place-items:center;transition:transform .2s;display:grid;position:relative;overflow:hidden}.bookshelf-section .book-card .book-cover-wrapper:hover{transform:translateY(-4px)}.bookshelf-section .book-card .book-cover-wrapper .cover-img{object-fit:cover;width:100%;height:100%}.bookshelf-section .book-card .book-cover-wrapper .no-cover-placeholder{font-family:var(--font-heading);color:var(--color-text-muted);text-align:center;padding:.5rem;font-size:.8rem}.bookshelf-section .book-card .book-info{flex-direction:column;gap:.15rem;display:flex}.bookshelf-section .book-card .book-info .book-title{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;line-height:1.3;overflow:hidden}.bookshelf-section .book-card .book-info .book-author{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.badges-grid{grid-template-columns:repeat(auto-fill,minmax(70px,1fr));justify-items:center;gap:1rem;display:grid}.badges-grid .badge-icon-item{cursor:help;opacity:.35;filter:grayscale();flex-direction:column;align-items:center;gap:.25rem;font-size:2.25rem;transition:all .2s;display:flex;position:relative}.badges-grid .badge-icon-item.unlocked{opacity:1;filter:none}.badges-grid .badge-icon-item .badge-label{text-align:center;color:var(--color-text-main);font-size:.65rem;font-weight:600}.leaderboard-view{flex-direction:column;gap:1.5rem;display:flex}.leaderboard-view .leaderboard-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.leaderboard-view .toggle-group{background-color:var(--color-bg-base);border:1px solid var(--color-border);border-radius:99px;padding:.25rem;display:flex}.leaderboard-view .toggle-group .toggle-btn{cursor:pointer;font-size:.85rem;font-weight:600;font-family:var(--font-heading);color:var(--color-text-muted);border-radius:99px;padding:.4rem 1.1rem;transition:all .2s}.leaderboard-view .toggle-group .toggle-btn.active{color:#fff;background-color:var(--color-accent-purple)}.leaderboard-view .leaderboard-list{flex-direction:column;gap:.75rem;display:flex}.leaderboard-view .leaderboard-row{background-color:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:16px;justify-content:space-between;align-items:center;padding:.9rem 1.25rem;display:flex}.leaderboard-view .leaderboard-row .row-left{align-items:center;gap:1rem;display:flex}.leaderboard-view .leaderboard-row .rank{font-family:var(--font-heading);width:25px;color:var(--color-text-muted);font-size:1.15rem;font-weight:700}.leaderboard-view .leaderboard-row .rank.rank-1{color:var(--color-accent-yellow)}.leaderboard-view .leaderboard-row .rank.rank-2{color:oklch(75% .05 240)}.leaderboard-view .leaderboard-row .rank.rank-3{color:oklch(65% .1 45)}.leaderboard-view .leaderboard-row .profile-info{flex-direction:column;gap:.1rem;display:flex}.leaderboard-view .leaderboard-row .profile-info .name{font-size:.95rem;font-weight:600}.leaderboard-view .leaderboard-row .profile-info .school{color:var(--color-text-muted);font-size:.75rem}.leaderboard-view .leaderboard-row .points{font-family:var(--font-heading);color:var(--color-accent-purple);font-weight:700}.leaderboard-view .leaderboard-row .points span{color:var(--color-text-muted);font-size:.8rem;font-weight:500}.book-search-box{gap:.75rem;width:100%;margin-bottom:1.5rem;display:flex}.search-results-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.25rem;max-height:400px;margin-top:1rem;padding-inline-end:.5rem;display:grid;overflow-y:auto}.search-result-card{background-color:var(--color-bg-base);border:1px solid var(--color-border);border-radius:12px;align-items:start;gap:1rem;padding:.75rem;display:flex}.search-result-card .search-cover{object-fit:cover;border:1px solid var(--color-border);border-radius:6px;width:60px;height:90px}.search-result-card .search-info{flex-direction:column;flex-grow:1;gap:.25rem;min-width:0;display:flex}.search-result-card .search-info .title{text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;font-weight:600;line-height:1.2;display:-webkit-box;overflow:hidden}.search-result-card .search-info .author{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}}@layer utilities{.text-center{text-align:center}.flex-row{flex-direction:row;display:flex}.align-center{align-items:center}.justify-between{justify-content:space-between}.gap-sm{gap:.5rem}.gap-md{gap:1rem}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}}
