:root{--bg-primary:#fff;--bg-secondary:#f8f8fa;--bg-card:#fff;--bg-modal:#fff;--text-primary:#1a1a1a;--text-secondary:#6b7280;--text-muted:#9ca3af;--accent-purple:#4b2e83;--accent-gold:#b7a57a;--border:#e8e8ec;--status-open:#059669;--status-open-bg:#ecfdf5;--status-closed:#dc2626;--status-closed-bg:#fef2f2;--status-husky:#2563eb;--status-husky-bg:#eff6ff;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 2px 8px #0000000f;--shadow-lg:0 8px 24px #0000001a;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px}@media (prefers-color-scheme:dark){:root{--bg-primary:#18181b;--bg-secondary:#27272a;--bg-card:#1f1f23;--bg-modal:#1f1f23;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--text-muted:#71717a;--border:#3f3f46;--status-open-bg:#0596691f;--status-closed-bg:#dc26261f;--status-husky-bg:#2563eb1f;--shadow-sm:0 1px 2px #0003;--shadow-md:0 2px 8px #00000040;--shadow-lg:0 8px 24px #00000059}}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.app{max-width:840px;min-height:100vh;margin:0 auto;padding:16px 20px}.app-header{padding:20px 0 16px}.app-header h1{color:var(--text-primary);letter-spacing:-.02em;font-size:1.4rem;font-weight:600}.app-subtitle{color:var(--text-muted);margin-top:2px;font-size:.85rem}.filter-tabs{scrollbar-width:none;-ms-overflow-style:none;gap:6px;padding:6px 0 14px;display:flex;overflow-x:auto}.filter-tabs::-webkit-scrollbar{display:none}.tab-btn{border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;white-space:nowrap;border:none;padding:6px 14px;font-size:.82rem;font-weight:400;transition:all .15s}.tab-btn:hover{color:var(--text-primary);background:var(--border)}.tab-btn.active{background:var(--accent-purple);color:#fff}.open-now-btn{border:.5px solid var(--border);background:0 0}.open-now-btn.active{background:var(--status-open);color:#fff;border-color:var(--status-open)}.husky-btn{border:.5px solid var(--border);background:0 0}.husky-btn.active{background:var(--status-husky);color:#fff;border-color:var(--status-husky)}.search-bar{padding:0 0 16px}.search-bar input{border:.5px solid var(--border);border-radius:var(--radius-md);background:var(--bg-secondary);width:100%;color:var(--text-primary);outline:none;padding:10px 14px;font-size:.9rem;transition:border-color .15s}.search-bar input::placeholder{color:var(--text-muted)}.search-bar input:focus{border-color:var(--accent-purple)}.resource-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:12px;display:grid}.resource-card{background:var(--bg-card);border:.5px solid var(--border);border-radius:var(--radius-lg);cursor:pointer;box-shadow:var(--shadow-sm);padding:16px 18px;transition:box-shadow .15s}.resource-card:hover{box-shadow:var(--shadow-md)}.card-header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.card-title{color:var(--text-primary);font-size:.92rem;font-weight:500;line-height:1.3}.star-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;flex-shrink:0;padding:0;font-size:1.2rem;line-height:1;transition:color .15s}.star-btn.active{color:var(--accent-gold)}.type-badge{text-transform:capitalize;background:var(--bg-secondary);color:var(--text-secondary);border-radius:4px;margin-top:8px;padding:3px 8px;font-size:.7rem;font-weight:500;display:inline-block}.type-badge.library,.type-badge.academic,.type-badge.student_center,.type-badge.dining{background:var(--bg-secondary);color:var(--text-secondary)}.husky-badge{background:var(--status-husky-bg);color:var(--status-husky);border-radius:4px;margin-top:8px;margin-left:6px;padding:3px 8px;font-size:.7rem;font-weight:500;display:inline-block}.hours-info{align-items:center;gap:8px;margin-top:10px;display:flex}.status{border-radius:4px;padding:3px 8px;font-size:.7rem;font-weight:500}.status.open{background:var(--status-open-bg);color:var(--status-open)}.status.closed{background:var(--status-closed-bg);color:var(--status-closed)}.status.unknown{background:var(--bg-secondary);color:var(--text-muted)}.status.husky{background:var(--status-husky-bg);color:var(--status-husky)}.hours-text{color:var(--text-secondary);font-size:.82rem}.countdown{color:var(--text-muted);margin-top:4px;font-size:.78rem;font-style:italic;display:block}.modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;padding:20px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-modal);border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:80vh;box-shadow:var(--shadow-lg);padding:24px;animation:.2s slideUp;position:relative;overflow-y:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:4px;font-size:1.1rem;transition:color .15s;position:absolute;top:14px;right:18px}.modal-close:hover{color:var(--text-primary)}.modal-title{color:var(--text-primary);padding-right:32px;font-size:1.15rem;font-weight:600}.modal-location{color:var(--accent-purple);margin-top:10px;font-size:.85rem;text-decoration:none;display:inline-block}.modal-location:hover{text-decoration:underline}.modal-description{color:var(--text-secondary);margin-top:8px;font-size:.83rem;line-height:1.6}.modal-website{background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius-sm);margin-top:10px;padding:6px 12px;font-size:.82rem;font-weight:500;text-decoration:none;transition:all .15s;display:inline-block}.modal-website:hover{background:var(--border);color:var(--text-primary)}.hours-heading{color:var(--text-primary);margin-top:18px;margin-bottom:6px;font-size:.88rem;font-weight:500}.hours-table{border-collapse:collapse;width:100%}.hours-table th,.hours-table td{text-align:left;border-bottom:.5px solid var(--border);padding:8px 10px;font-size:.83rem}.hours-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:500}.hours-table .today-row{background:#4b2e830a}.hours-table .today-row td{color:var(--accent-purple);font-weight:500}.loading{height:60vh;color:var(--text-muted);justify-content:center;align-items:center;font-size:.9rem;display:flex}.error{height:60vh;color:var(--status-closed);text-align:center;justify-content:center;align-items:center;padding:20px;font-size:.9rem;display:flex}.empty-state{text-align:center;color:var(--text-muted);grid-column:1/-1;padding:48px 20px}.empty-state p{font-size:.9rem}
