*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  --primary:#1a365d;
  --accent:#2b6cb0;
  --notes-clr:#3182ce;
  --q-clr:#38a169;
  --model-clr:#dd6b20;
  --text:#2d3748;
  --text-light:#718096;
  --bg:#f7fafc;
  --card-bg:#fff;
  --border:#e2e8f0;
  --tag-bg:#edf2f7;
  --tag-active:#2b6cb0;
  --tag-active-text:#fff;
  --header-text:#fff;
  --footer-bg:#1a365d;
  --footer-text:#a0aec0;
  --highlight:#fefcbf;
  --radius-md:8px;
  --radius-sm:4px;
  --max-w:1200px;
  --ff:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif
}

body.dark-mode{
  --primary:#0f1d35;
  --accent:#3182ce;
  --notes-clr:#4299e1;
  --q-clr:#48bb78;
  --model-clr:#ed8936;
  --text:#e2e8f0;
  --text-light:#a0aec0;
  --bg:#1a202c;
  --card-bg:#2d3748;
  --border:#4a5568;
  --tag-bg:#4a5568;
  --tag-active:#4299e1;
  --highlight:#5b4d1e;
  --footer-bg:#0f1d35;
  --footer-text:#718096
}

html{font-size:16px}
body{
  font-family:var(--ff);
  color:var(--text);
  background:var(--bg);
  line-height:1.6;
  min-height:100vh;
  display:flex;
  flex-direction:column
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code{
  font-family:'SF Mono','Fira Code','Fira Mono',Menlo,Consolas,monospace;
  font-size:.875em;
  background:var(--tag-bg);
  padding:.15em .4em;
  border-radius:var(--radius-sm)
}

.header{
  background:var(--primary);
  color:var(--header-text);
  position:sticky;
  top:0;
  z-index:100
}
.header-inner{max-width:var(--max-w);margin:0 auto;padding:1rem 1.5rem}
.header-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}
.header-title{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;line-height:1.2}
.header-subtitle{font-size:.8125rem;opacity:.8;margin-top:.1rem;font-weight:400}

.dark-mode-btn{
  background:rgba(255,255,255,.12);
  border:none;
  color:var(--header-text);
  font-size:1.25rem;
  width:2.25rem;
  height:2.25rem;
  border-radius:50%;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  margin-left:1rem
}
.dark-mode-btn:hover{background:rgba(255,255,255,.25)}

.search-container{position:relative;display:flex;align-items:center}
.search-icon{
  position:absolute;
  left:.875rem;
  width:1.125rem;
  height:1.125rem;
  opacity:.6;
  pointer-events:none;
  color:var(--header-text)
}
.search-input{
  width:100%;
  padding:.75rem 1rem .75rem 2.75rem;
  border:none;
  border-radius:var(--radius-md);
  background:rgba(255,255,255,.12);
  color:var(--header-text);
  font-size:.9375rem;
  font-family:var(--ff);
  outline:none
}
.search-input::placeholder{color:rgba(255,255,255,.6)}
.search-input:focus{background:rgba(255,255,255,.2)}
.search-shortcut{
  position:absolute;
  right:.75rem;
  background:rgba(255,255,255,.15);
  color:rgba(255,255,255,.7);
  padding:.1rem .45rem;
  border-radius:var(--radius-sm);
  font-size:.75rem;
  font-family:var(--ff);
  pointer-events:none
}

.main{max-width:var(--max-w);margin:0 auto;padding:0 1.5rem 2rem;flex:1;width:100%}

.tabs{
  display:flex;
  gap:.125rem;
  border-bottom:2px solid var(--border);
  overflow-x:auto;
  -webkit-overflow-scrolling:touch
}
.tab{
  background:none;
  border:none;
  padding:.75rem 1.25rem;
  font-size:.875rem;
  font-weight:600;
  color:var(--text-light);
  cursor:pointer;
  font-family:var(--ff);
  white-space:nowrap;
  border-bottom:2px solid transparent;
  margin-bottom:-2px
}
.tab:hover{color:var(--text)}
.tab.active{color:var(--accent);border-bottom-color:var(--accent)}

.filter-bar{
  display:flex;
  gap:.5rem;
  align-items:center;
  padding:.5rem 0;
  margin-bottom:.5rem
}
.filter-toggle-btn{
  font-size:.75rem;
  font-family:var(--ff);
  padding:.25rem .75rem;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  background:var(--card-bg);
  color:var(--text-light);
  cursor:pointer
}
.filter-toggle-btn:hover{color:var(--text);border-color:var(--text-light)}
.clear-filters-btn{
  font-size:.75rem;
  font-family:var(--ff);
  padding:.25rem .75rem;
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  background:var(--card-bg);
  color:var(--text-light);
  cursor:pointer
}
.clear-filters-btn:hover{color:var(--text);border-color:var(--text-light)}
.clear-filters-btn.hidden,.filter-toggle-btn.hidden{display:none}

.filters-container{
  background:var(--card-bg);
  border:1px solid var(--border);
  border-top:none;
  border-radius:0 0 var(--radius-md) var(--radius-md);
  padding:.75rem 1rem;
  margin-bottom:.75rem;
  display:none
}
.filters-container.open{display:block}
.filter-section{display:flex;align-items:flex-start;gap:.5rem;margin-bottom:.5rem;flex-wrap:wrap}
.filter-section:last-child{margin-bottom:0}
.filter-label{
  font-size:.75rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--text-light);
  min-width:5rem;
  padding-top:.25rem;
  flex-shrink:0
}
.filter-tags{display:flex;flex-wrap:wrap;gap:.375rem}
.filter-tag{
  display:inline-block;
  font-size:.75rem;
  padding:.2rem .6rem;
  border-radius:999px;
  background:var(--tag-bg);
  color:var(--text);
  cursor:pointer;
  border:1px solid transparent;
  font-family:var(--ff);
  user-select:none
}
.filter-tag:hover{border-color:var(--accent)}
.filter-tag.active{background:var(--tag-active);color:var(--tag-active-text);border-color:var(--tag-active)}

.stats-bar{padding:.5rem 0;font-size:.8125rem;color:var(--text-light)}

.state-msg{text-align:center;padding:3rem 1rem;color:var(--text-light);font-size:.9375rem}
.state-msg code{background:var(--tag-bg);padding:.15em .4em;border-radius:var(--radius-sm)}
.state-msg.hidden,.loading.hidden{display:none}

.loading{text-align:center;padding:2rem 1rem;color:var(--text-light);font-size:.9375rem}

.cards-container{display:grid;gap:.75rem}

.card{
  background:var(--card-bg);
  border:1px solid var(--border);
  border-left:4px solid var(--border);
  padding:1rem 1.25rem;
  cursor:pointer;
  position:relative;
  contain:layout style;
  content-visibility:auto
}
.card.type-study_notes{border-left-color:var(--notes-clr)}
.card.type-answer_bank{border-left-color:var(--q-clr)}
.card.type-question_bank{border-left-color:var(--model-clr)}

.card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.375rem}
.card-title{font-size:.9375rem;font-weight:700;color:var(--text);line-height:1.4;flex:1}
.card-badges{display:flex;gap:.375rem;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}
.card-badge{
  font-size:.6875rem;
  padding:.15rem .5rem;
  border-radius:999px;
  background:var(--tag-bg);
  color:var(--text-light);
  white-space:nowrap;
  font-weight:500
}
.card-badge.source{background:var(--primary);color:var(--header-text)}
.card-badge.marks{background:#fef3c7;color:#92400e}
body.dark-mode .card-badge.marks{background:#5b4d1e;color:#fef3c7}

.card-type-label{
  font-size:.6875rem;
  font-weight:600;
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:.375rem
}
.card-type-label.type-study_notes{color:var(--notes-clr)}
.card-type-label.type-answer_bank{color:var(--q-clr)}
.card-type-label.type-question_bank{color:var(--model-clr)}

.card-preview{
  font-size:.8125rem;
  color:var(--text-light);
  line-height:1.5;
  margin-top:.25rem;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden
}
.card.is-expanded .card-preview{display:none}

.card-topics{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.5rem}
.card-topic{
  font-size:.6875rem;
  padding:.1rem .45rem;
  border-radius:999px;
  background:var(--tag-bg);
  color:var(--text-light)
}

.card-answer{max-height:0;overflow:hidden;opacity:0;margin-top:0}
.card.is-expanded .card-answer{max-height:20000px;opacity:1;margin-top:.75rem}

.card-answer-inner{
  font-size:.875rem;
  line-height:1.7;
  color:var(--text);
  padding-top:.75rem;
  border-top:1px solid var(--border)
}
.card-answer-inner h3,.card-answer-inner h4{margin-top:1.25rem;margin-bottom:.5rem;font-weight:700;color:var(--text)}
.card-answer-inner h3{font-size:1.0625rem}
.card-answer-inner h4{font-size:.9375rem}
.card-answer-inner p{margin-bottom:.75rem}
.card-answer-inner p:last-child{margin-bottom:0}
.card-answer-inner ul,.card-answer-inner ol{margin:.5rem 0 .75rem;padding-left:1.5rem}
.card-answer-inner li{margin-bottom:.25rem}
.card-answer-inner strong{font-weight:700}
.card-answer-inner em{font-style:italic}
.card-answer-inner code{
  background:var(--tag-bg);
  padding:.1em .35em;
  border-radius:var(--radius-sm);
  font-size:.8125em
}
.card-answer-inner pre{
  background:var(--tag-bg);
  padding:.75rem 1rem;
  border-radius:var(--radius-md);
  overflow-x:auto;
  margin:.5rem 0;
  font-size:.8125rem;
  line-height:1.5
}
.card-answer-inner pre code{background:none;padding:0}

.expand-indicator{font-size:.75rem;color:var(--text-light);margin-top:.5rem;opacity:.7}
.expand-indicator .arrow{display:inline-block;font-size:.625rem}
.card.is-expanded .expand-indicator .arrow{transform:rotate(180deg)}

.highlight{background:var(--highlight);padding:0 .1em;border-radius:2px}

.load-more-btn{
  display:block;
  width:100%;
  padding:.75rem;
  margin-top:.75rem;
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  background:var(--card-bg);
  color:var(--accent);
  font-size:.875rem;
  font-weight:600;
  font-family:var(--ff);
  cursor:pointer;
  text-align:center
}
.load-more-btn:hover{background:var(--tag-bg)}
.load-more-btn:disabled{opacity:.5;cursor:default}
.load-more-btn.hidden{display:none}

.footer{
  background:var(--footer-bg);
  color:var(--footer-text);
  text-align:center;
  padding:1.5rem;
  font-size:.8125rem;
  margin-top:2rem
}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}

@media(max-width:768px){
  .header-inner{padding:.75rem 1rem}
  .header-title{font-size:1.25rem}
  .header-subtitle{font-size:.75rem}
  .main{padding:0 1rem 1.5rem}
  .tabs{gap:0}
  .tab{padding:.625rem .875rem;font-size:.8125rem;flex:1;text-align:center}
  .filters-container{padding:.5rem .75rem}
  .filter-section{flex-direction:column;gap:.25rem}
  .filter-label{min-width:auto}
  .card{padding:.75rem 1rem}
  .card-header{flex-direction:column;gap:.375rem}
  .card-badges{justify-content:flex-start}
  .search-shortcut{display:none}
  .stats-bar{flex-direction:column;gap:.25rem;align-items:flex-start}
}

@media(max-width:480px){
  .header-title{font-size:1.1rem}
  .tab{padding:.5rem .625rem;font-size:.75rem}
  .card-title{font-size:.875rem}
}
