@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Sora:wght@400;600;700;800&display=swap";:root{--color-ink:#0d1117;--color-ink-soft:#1c2333;--color-ink-muted:#6e7891;--color-ink-faint:#a8b3cf;--color-surface:#fff;--color-surface-2:#f5f7fa;--color-surface-3:#eef1f6;--color-border:#e3e8f0;--color-border-2:#d0d7e3;--color-brand:#4f6ef7;--color-brand-dark:#3a56e0;--color-brand-soft:#4f6ef71a;--color-brand-glow:#4f6ef738;--color-teal:#0ea5c9;--color-teal-soft:#0ea5c91a;--color-green:#16a34a;--color-green-soft:#16a34a1a;--color-red:#dc2626;--color-red-soft:#dc26261a;--color-amber:#d97706;--color-amber-soft:#d977061a;--shadow-xs:0 1px 2px #0d11170f;--shadow-sm:0 2px 6px #0d111712,0 1px 2px #0d11170a;--shadow-md:0 4px 16px #0d111714,0 2px 4px #0d11170a;--shadow-lg:0 8px 32px #0d11171a,0 2px 8px #0d11170d;--shadow-xl:0 16px 48px #0d11171f,0 4px 12px #0d11170f;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-xl:22px;--r-2xl:32px;--header-h:64px;--font-ui:"Inter",system-ui,sans-serif;--font-display:"Sora","Inter",sans-serif;--ease-out:cubic-bezier(.16,1,.3,1);--ease-in-out:cubic-bezier(.4,0,.2,1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-ui);background-color:var(--color-surface-2);color:var(--color-ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--color-ink);font-weight:700;line-height:1.25}button{font-family:var(--font-ui);cursor:pointer}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-2);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--color-ink-faint)}.faculty-page{background:var(--color-surface-2);min-height:100vh;padding-bottom:96px}.faculty-header{-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);z-index:800;background:#fffffff2;align-items:center;gap:12px;height:60px;padding:0 16px;display:flex;position:sticky;top:0}.faculty-title{font-family:var(--font-display);color:var(--color-ink);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:.95rem;font-weight:700;overflow:hidden}.search-icon-btn{background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:var(--r-md);width:36px;height:36px;color:var(--color-ink-muted);justify-content:center;align-items:center;transition:background .15s,border-color .15s,color .15s;display:flex}.search-icon-btn:hover{background:var(--color-brand-soft);color:var(--color-brand);border-color:#4f6ef740}.btn.ghost{background:var(--color-surface-3);border:1px solid var(--color-border);border-radius:var(--r-md);width:36px;height:36px;color:var(--color-ink-muted);justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.btn.ghost:hover{background:var(--color-surface);color:var(--color-ink)}.filters-bar{flex-wrap:wrap;gap:8px;max-width:760px;margin:16px auto;padding:0 16px;display:flex}.filters-bar select{border:1px solid var(--color-border);border-radius:var(--r-md);background:var(--color-surface);min-width:130px;color:var(--color-ink-soft);font-family:var(--font-ui);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236e7891' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;outline:none;flex:1;padding:9px 30px 9px 12px;font-size:.85rem;transition:border-color .2s,box-shadow .2s}.filters-bar select:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-soft)}.list{flex-direction:column;gap:8px;max-width:760px;margin:0 auto;padding:0 16px;display:flex}.pdf-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);cursor:pointer;align-items:center;gap:14px;padding:14px 16px;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.pdf-card:hover{border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-soft),var(--shadow-sm);background:#fafbff}.pdf-thumb{border-radius:var(--r-md);flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.25rem;display:flex}.pdf-thumb.is-pdf{background:var(--color-red-soft);color:var(--color-red)}.pdf-thumb.is-image{background:var(--color-teal-soft);color:var(--color-teal)}.pdf-card-main{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.pdf-header-row{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.pdf-title{color:var(--color-ink);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.9rem;font-weight:600;line-height:1.4;display:-webkit-box;overflow:hidden}.pdf-badge{letter-spacing:.04em;color:var(--color-ink-faint);background:var(--color-surface-3);border:1px solid var(--color-border);white-space:nowrap;border-radius:99px;flex-shrink:0;padding:2px 7px;font-size:.68rem;font-weight:700}.pdf-subject{color:var(--color-brand);font-size:.8rem;font-weight:500}.pdf-meta-row{align-items:center;gap:10px;margin-top:2px;display:flex}.pdf-meta{color:var(--color-ink-faint);align-items:center;gap:4px;font-size:.75rem;display:flex}.fab-plus{background:var(--color-brand);color:#fff;width:52px;height:52px;box-shadow:0 4px 16px var(--color-brand-glow);z-index:500;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .2s,transform .2s,box-shadow .2s;display:flex;position:fixed;bottom:24px;right:20px}.fab-plus:hover{background:var(--color-brand-dark);box-shadow:0 6px 24px var(--color-brand-glow);transform:scale(1.07)}.search-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1200;background:#0d111780;justify-content:flex-end;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.search-modal{background:var(--color-surface);border-left:1px solid var(--color-border);width:100%;max-width:420px;height:100%;animation:slideFromRight .3s var(--ease-out);flex-direction:column;gap:16px;padding:24px 20px;display:flex}@keyframes slideFromRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.search-modal h3{color:var(--color-ink);font-size:1rem;font-weight:700}.close-search{background:var(--color-surface-3);border-radius:var(--r-sm);width:32px;height:32px;color:var(--color-ink-muted);cursor:pointer;border:none;justify-content:center;align-items:center;font-size:1.2rem;transition:background .15s,color .15s;display:flex;position:absolute;top:20px;right:20px}.close-search:hover{background:var(--color-red-soft);color:var(--color-red)}.faculty-search-modal{border:1px solid var(--color-border);border-radius:var(--r-md);width:100%;font-family:var(--font-ui);color:var(--color-ink);outline:none;padding:10px 14px;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.faculty-search-modal:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-soft)}.search-results{flex-direction:column;flex:1;gap:8px;display:flex;overflow-y:auto}.search-pdf-card{border:1px solid var(--color-border);border-radius:var(--r-md);cursor:pointer;align-items:center;gap:12px;padding:12px;transition:border-color .15s,background .15s;display:flex}.search-pdf-card:hover{border-color:var(--color-brand);background:#fafbff}.search-pdf-info{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.search-pdf-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.search-pdf-title{color:var(--color-ink);white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:600;overflow:hidden}.search-pdf-subject{color:var(--color-brand);font-size:.78rem;font-weight:500}.search-pdf-meta{color:var(--color-ink-faint);gap:10px;font-size:.72rem;display:flex}.skeleton-container{flex-direction:column;gap:8px;display:flex}.skeleton-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);align-items:center;gap:14px;padding:14px 16px;display:flex;position:relative;overflow:hidden}.skeleton-card:after{content:"";background:linear-gradient(90deg,#0000 0%,#fff9 50%,#0000 100%) 0 0/200% 100%;animation:1.4s infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-icon{border-radius:var(--r-md);background:var(--color-surface-3);flex-shrink:0;width:44px;height:44px}.skeleton-content{flex-direction:column;flex:1;gap:8px;display:flex}.skeleton-title{background:var(--color-surface-3);border-radius:4px;width:65%;height:14px}.skeleton-infos{gap:8px;display:flex}.skeleton-info{background:var(--color-surface-3);border-radius:4px;width:52px;height:11px}.skeleton-badge{background:var(--color-surface-3);border-radius:99px;width:32px;height:16px;position:absolute;top:14px;right:16px}.skeleton-stars,.skeleton-buttons,.skeleton-btn{display:none}.empty{text-align:center;color:var(--color-ink-muted);background:var(--color-surface);border:1px dashed var(--color-border-2);border-radius:var(--r-lg);padding:48px 24px;font-size:.9rem}.empty-state{text-align:center;background:var(--color-surface);border:1px dashed var(--color-border-2);border-radius:var(--r-lg);color:var(--color-ink-muted);flex-direction:column;align-items:center;gap:12px;padding:48px 24px;font-size:.9rem;display:flex}.empty-icon{opacity:.7;font-size:2.5rem}.btn-retry{background:var(--color-brand);color:#fff;border-radius:var(--r-md);cursor:pointer;border:none;padding:9px 20px;font-size:.85rem;font-weight:600;transition:background .2s,transform .15s}.btn-retry:hover{background:var(--color-brand-dark);transform:translateY(-1px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.app-root{background:var(--color-surface-2);flex-direction:column;min-height:100vh;display:flex}.main-content{padding-top:var(--header-h);flex:1}.app-header{height:var(--header-h);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);z-index:900;background:#ffffffeb;position:fixed;inset:0 0 auto}.header-content{justify-content:space-between;align-items:center;max-width:1200px;height:100%;margin:0 auto;padding:0 24px;display:flex}.app-brand{align-items:center;gap:10px;display:flex}.brand-name{font-family:var(--font-display);color:var(--color-brand);letter-spacing:-.02em;font-size:1.35rem;font-weight:800}.menu-burger{border:1px solid var(--color-border);border-radius:var(--r-md);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;transition:border-color .2s,background .2s;display:flex}.menu-burger:hover{background:var(--color-surface-3);border-color:var(--color-border-2)}.burger-bar{background:var(--color-ink-soft);border-radius:2px;width:18px;height:1.5px;transition:background .2s}.drawer-overlay{-webkit-backdrop-filter:blur(3px);z-index:1000;background:#0d111773;animation:.2s fadeIn;position:fixed;inset:0}.drawer{background:var(--color-surface);z-index:1001;width:280px;transition:transform .35s var(--ease-out);border-left:1px solid var(--color-border);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%)}.drawer.drawer-open{transform:translate(0)}.drawer-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:20px 20px 16px;display:flex}.drawer-brand{align-items:center;gap:8px;display:flex}.drawer-brand h2{font-family:var(--font-display);color:var(--color-brand);font-size:1.1rem;font-weight:800}.drawer-close{background:var(--color-surface-3);border-radius:var(--r-sm);width:32px;height:32px;color:var(--color-ink-muted);border:none;justify-content:center;align-items:center;transition:background .2s,color .2s;display:flex}.drawer-close:hover{background:var(--color-red-soft);color:var(--color-red)}.drawer-nav{flex-direction:column;flex:1;gap:4px;padding:16px 12px;display:flex}.drawer-nav-item{border-radius:var(--r-md);color:var(--color-ink-muted);text-align:left;background:0 0;border:none;align-items:center;gap:12px;padding:11px 14px;font-size:.9rem;font-weight:500;transition:background .15s,color .15s;display:flex}.drawer-nav-item:hover{background:var(--color-surface-3);color:var(--color-ink)}.drawer-nav-item.active{background:var(--color-brand-soft);color:var(--color-brand);font-weight:600}.drawer-footer{border-top:1px solid var(--color-border);padding:16px 20px}.intro{text-align:center;max-width:640px;margin:0 auto;padding:72px 24px 48px}.intro h3{color:var(--color-ink);letter-spacing:-.03em;margin-bottom:14px;font-size:2rem;font-weight:800}.intro p{color:var(--color-ink-muted);font-size:1rem;line-height:1.75}.container{max-width:1100px;margin:0 auto;padding:0 24px}.container>h3{text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-faint);margin-bottom:20px;font-size:.75rem;font-weight:600}.grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;padding-bottom:64px;display:grid}.faculty-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-lg);text-align:left;cursor:pointer;flex-direction:column;gap:16px;padding:24px;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex}.faculty-card:hover{border-color:var(--color-brand);box-shadow:var(--shadow-md),0 0 0 3px var(--color-brand-soft);transform:translateY(-2px)}.faculty-icon{border-radius:var(--r-md);background:var(--color-brand-soft);width:48px;height:48px;color:var(--color-brand);justify-content:center;align-items:center;font-size:1.4rem;transition:background .2s,color .2s;display:flex}.faculty-card:hover .faculty-icon{background:var(--color-brand);color:#fff}.card-inner{flex-direction:column;gap:4px;display:flex}.card-inner strong{color:var(--color-ink);font-size:.95rem;font-weight:600;line-height:1.4}.card-inner p{color:var(--color-ink-faint);font-size:.8rem}.foot{text-align:center;color:var(--color-ink-faint);padding:32px 24px 48px;font-size:.82rem}.start-screen{background:var(--color-surface);z-index:9999;flex-direction:column;justify-content:center;align-items:center;gap:20px;display:flex;position:fixed;inset:0}.start-screen p{color:var(--color-ink-muted);font-size:.9rem;font-weight:500}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-brand);border-radius:50%;width:36px;height:36px;animation:.75s linear infinite spin}.about-content{max-width:680px;margin:0 auto;padding:0 24px 64px}.about-content p{color:var(--color-ink-muted);margin-bottom:16px;font-size:.95rem;line-height:1.8}.about-content p b{color:var(--color-ink);font-weight:600}.about-section-title{color:var(--color-ink);margin:32px 0 16px;font-size:1rem;font-weight:700}.about-features{flex-direction:column;gap:10px;margin-bottom:24px;padding:0;list-style:none;display:flex}.about-features li{color:var(--color-ink-muted);align-items:center;gap:10px;font-size:.9rem;display:flex}.about-features li:before{content:"";background:var(--color-brand);border-radius:50%;flex-shrink:0;width:6px;height:6px}.upload-counter{background:var(--color-brand-soft);border-radius:var(--r-lg);border:1px solid #4f6ef733;align-items:center;gap:12px;margin:8px 0 32px;padding:14px 24px;display:inline-flex}.upload-counter p{color:var(--color-brand);font-size:.9rem;font-weight:600}.suggestions-form-wrap{max-width:560px;margin:0 auto;padding:0 24px 64px}.suggestions-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--r-xl);flex-direction:column;gap:20px;padding:32px;display:flex}.form-field-group{flex-direction:column;gap:6px;display:flex}.form-field-group label{color:var(--color-ink-soft);letter-spacing:.01em;font-size:.82rem;font-weight:600}.form-field-group input,.form-field-group textarea{border:1px solid var(--color-border);border-radius:var(--r-md);font-family:var(--font-ui);color:var(--color-ink);background:var(--color-surface);outline:none;padding:11px 14px;font-size:.9rem;transition:border-color .2s,box-shadow .2s}.form-field-group input::placeholder,.form-field-group textarea::placeholder{color:var(--color-ink-faint)}.form-field-group input:focus,.form-field-group textarea:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-soft)}.form-field-group textarea{resize:vertical;min-height:120px}.btn-primary{background:var(--color-brand);color:#fff;border-radius:var(--r-md);box-shadow:0 2px 8px var(--color-brand-glow);border:none;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:.9rem;font-weight:600;transition:background .2s,transform .15s,box-shadow .2s;display:inline-flex}.btn-primary:hover:not(:disabled){background:var(--color-brand-dark);box-shadow:0 4px 16px var(--color-brand-glow);transform:translateY(-1px)}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.form-success{background:var(--color-green-soft);border-radius:var(--r-md);color:var(--color-green);border:1px solid #16a34a33;align-items:center;gap:8px;padding:12px 16px;font-size:.88rem;font-weight:500;display:flex}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:640px){.intro h3{font-size:1.6rem}.grid{grid-template-columns:1fr}.header-content,.container{padding:0 16px}}
