/* ===================================================
   DESIGN TOKENS
=================================================== */
:root,[data-theme="light"]{
  --font-display:'Chillax','Plus Jakarta Sans',sans-serif;
  --font-body:'Plus Jakarta Sans',sans-serif;
  --text-xs:clamp(.75rem,.7rem + .25vw,.875rem);
  --text-sm:clamp(.875rem,.8rem + .35vw,1rem);
  --text-base:clamp(1rem,.95rem + .25vw,1.125rem);
  --text-lg:clamp(1.125rem,1rem + .75vw,1.5rem);
  --text-xl:clamp(1.5rem,1.2rem + 1.25vw,2.25rem);
  --text-2xl:clamp(2rem,1.2rem + 2.5vw,3.5rem);
  --text-3xl:clamp(2.5rem,1rem + 4vw,5rem);
  --sp1:.25rem;--sp2:.5rem;--sp3:.75rem;--sp4:1rem;--sp5:1.25rem;
  --sp6:1.5rem;--sp8:2rem;--sp10:2.5rem;--sp12:3rem;--sp16:4rem;
  --bg:#f0f7ff;--surface:#f8fbff;--surface2:#fff;
  --surface-off:#e3eef9;--divider:#cde0f4;--border:#b8d3ed;
  --text:#0f2a45;--tm:#4a6a8a;--tf:#8eadc8;--ti:#f0f7ff;
  --primary:#1a6fb5;--ph:#155994;--pa:#0e4270;--phl:#c8e0f6;
  --accent:#f59e0b;--ah:#d97706;--ahl:#fef3c7;
  --success:#16a34a;--sl:#dcfce7;
  --error:#dc2626;--el:#fee2e2;
  --purple:#7c3aed;--pl:#ede9fe;
  --teal:#0d9488;--tl:#ccfbf1;
  --pink:#db2777;--pkl:#fce7f3;
  --orange:#ea580c;--ol:#ffedd5;
  --r-sm:.375rem;--r-md:.5rem;--r-lg:.75rem;--r-xl:1rem;--r-2xl:1.5rem;--r-full:9999px;
  --sh-sm:0 1px 3px rgba(15,42,69,.08);
  --sh-md:0 4px 16px rgba(15,42,69,.10);
  --sh-lg:0 12px 40px rgba(15,42,69,.14);
  --tr:180ms cubic-bezier(.16,1,.3,1);
  --cw:1180px;--cm:960px;
}
[data-theme="dark"]{
  --bg:#0a1929;--surface:#0d2137;--surface2:#112844;
  --surface-off:#0c1f32;--divider:#1a3350;--border:#1e3d5e;
  --text:#c8dff2;--tm:#6a9bc4;--tf:#3a6080;--ti:#0a1929;
  --primary:#60a8e8;--ph:#82bcee;--pa:#a4d0f4;--phl:#1a3d5e;
  --accent:#fbbf24;--ah:#fcd34d;--ahl:#2d2006;
  --success:#34d399;--sl:#0d2d1e;
  --error:#f87171;--el:#2d0d0d;
  --purple:#a78bfa;--pl:#1d1135;
  --teal:#2dd4bf;--tl:#0d2420;
  --pink:#f472b6;--pkl:#2d0f1f;
  --orange:#fb923c;--ol:#2d1508;
  --sh-sm:0 1px 3px rgba(0,0,0,.3);
  --sh-md:0 4px 16px rgba(0,0,0,.4);
  --sh-lg:0 12px 40px rgba(0,0,0,.5);
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme]){
    --bg:#0a1929;--surface:#0d2137;--surface2:#112844;--surface-off:#0c1f32;
    --divider:#1a3350;--border:#1e3d5e;--text:#c8dff2;--tm:#6a9bc4;
    --tf:#3a6080;--ti:#0a1929;--primary:#60a8e8;--ph:#82bcee;--pa:#a4d0f4;
    --phl:#1a3d5e;--accent:#fbbf24;--ah:#fcd34d;--ahl:#2d2006;
    --success:#34d399;--sl:#0d2d1e;--error:#f87171;--el:#2d0d0d;
    --purple:#a78bfa;--pl:#1d1135;--teal:#2dd4bf;--tl:#0d2420;
    --sh-sm:0 1px 3px rgba(0,0,0,.3);--sh-md:0 4px 16px rgba(0,0,0,.4);
  }
}

/* ===================================================
   BASE RESET
=================================================== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;text-size-adjust:none;scroll-behavior:smooth;scroll-padding-top:var(--sp16)}
body{min-height:100dvh;font-family:var(--font-body);font-size:var(--text-base);color:var(--text);background:var(--bg);line-height:1.65}
img,svg{display:block;max-width:100%;height:auto}
ul[role="list"],ol[role="list"]{list-style:none}
input,button,textarea,select{font:inherit;color:inherit}
h1,h2,h3,h4,h5,h6{text-wrap:balance;line-height:1.15}
p,li{text-wrap:pretty}
button{cursor:pointer;background:none;border:none}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:var(--r-sm)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ===================================================
   LAYOUT
=================================================== */
.container{width:min(var(--cw),100% - 2*var(--sp6));margin-inline:auto}
.container-md{width:min(var(--cm),100% - 2*var(--sp6));margin-inline:auto}

/* ===================================================
   NAVBAR
=================================================== */
.navbar{
  position:sticky;top:0;z-index:100;
  background:color-mix(in srgb,var(--surface) 92%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--divider);padding-block:var(--sp3);
}
.navbar-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--sp4)}
.nav-logo{display:flex;align-items:center;gap:var(--sp3);font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--text);text-decoration:none}
.nav-logo:hover{text-decoration:none}
.nav-right{display:flex;align-items:center;gap:var(--sp2)}
.nav-tabs{display:flex;gap:var(--sp1);list-style:none;background:var(--surface-off);border-radius:var(--r-full);padding:var(--sp1)}
.nav-tab{padding:var(--sp2) var(--sp4);border-radius:var(--r-full);font-size:var(--text-sm);font-weight:600;color:var(--tm);cursor:pointer;transition:background var(--tr),color var(--tr);white-space:nowrap}
.nav-tab:hover{color:var(--text)}
.nav-tab.active{background:var(--surface2);color:var(--primary);box-shadow:var(--sh-sm)}
.theme-toggle{width:2.25rem;height:2.25rem;display:grid;place-items:center;border-radius:var(--r-full);color:var(--tm);transition:background var(--tr),color var(--tr)}
.theme-toggle:hover{background:var(--surface-off);color:var(--text)}
@media(max-width:720px){.nav-tabs{display:none}}

/* mobile chips */
.mobile-nav{display:none;padding:var(--sp3) 0;border-bottom:1px solid var(--divider);overflow-x:auto;white-space:nowrap;padding-inline:var(--sp6);scrollbar-width:none}
.mobile-nav::-webkit-scrollbar{display:none}
@media(max-width:720px){.mobile-nav{display:flex;gap:var(--sp2)}}
.m-chip{padding:var(--sp2) var(--sp4);border-radius:var(--r-full);font-size:var(--text-sm);font-weight:600;cursor:pointer;border:1.5px solid var(--border);background:var(--surface2);color:var(--tm);transition:all var(--tr)}
.m-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ===================================================
   HERO
=================================================== */
.hero{padding-block:clamp(var(--sp12),8vw,var(--sp16));text-align:center;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,color-mix(in srgb,var(--primary) 12%,transparent),transparent 70%),radial-gradient(ellipse 50% 40% at 80% 80%,color-mix(in srgb,var(--accent) 10%,transparent),transparent 70%);pointer-events:none}
.hero-badge{display:inline-flex;align-items:center;gap:var(--sp2);padding:var(--sp2) var(--sp4);background:var(--phl);color:var(--primary);font-size:var(--text-sm);font-weight:600;border-radius:var(--r-full);margin-bottom:var(--sp5)}
.hero-title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;color:var(--text);margin-bottom:var(--sp4);max-width:14ch;margin-inline:auto}
.hero-title span{color:var(--primary)}
.hero-subtitle{font-size:var(--text-lg);color:var(--tm);max-width:52ch;margin-inline:auto;margin-bottom:var(--sp8)}
.hero-stats{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--sp4);list-style:none;margin-bottom:var(--sp8)}
.stat-chip{display:flex;align-items:center;gap:var(--sp2);padding:var(--sp2) var(--sp5);background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-full);font-size:var(--text-sm);font-weight:600;color:var(--tm);box-shadow:var(--sh-sm)}
.stat-chip .dot{width:8px;height:8px;border-radius:50%}

/* ===================================================
   SECTIONS
=================================================== */
.content-section{display:none}
.content-section.active{display:block}
.section-header{padding-block:clamp(var(--sp8),4vw,var(--sp12)) var(--sp8)}
.class-label{display:inline-flex;align-items:center;gap:var(--sp2);padding:var(--sp2) var(--sp4);border-radius:var(--r-full);font-size:var(--text-sm);font-weight:700;margin-bottom:var(--sp4);text-transform:uppercase;letter-spacing:.08em}
.label-7{background:var(--phl);color:var(--primary)}
.label-8{background:var(--pl);color:var(--purple)}
.label-9{background:var(--tl);color:var(--teal)}
.section-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--text);margin-bottom:var(--sp3)}
.section-desc{font-size:var(--text-lg);color:var(--tm);max-width:60ch}

/* ===================================================
   TOPIC GRID + CARDS
=================================================== */
.topics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:var(--sp6);padding-bottom:clamp(var(--sp12),6vw,var(--sp16))}
.topic-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--r-2xl);overflow:hidden;box-shadow:var(--sh-sm);transition:transform var(--tr),box-shadow var(--tr),border-color var(--tr)}
.topic-card:hover{transform:translateY(-3px);box-shadow:var(--sh-md);border-color:var(--primary)}
.card-header{padding:var(--sp5) var(--sp6) var(--sp4);display:flex;align-items:flex-start;gap:var(--sp4)}
.card-icon{width:3rem;height:3rem;flex-shrink:0;border-radius:var(--r-lg);display:grid;place-items:center;font-size:1.5rem}
.card-meta{flex:1;min-width:0}
.card-chapter{font-size:var(--text-xs);color:var(--tf);font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp1)}
.card-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--text);line-height:1.2}
.card-body{padding:0 var(--sp6) var(--sp5)}
.card-desc{font-size:var(--text-sm);color:var(--tm);margin-bottom:var(--sp4);line-height:1.55}

/* ===================================================
   ACCORDION
=================================================== */
.accordion-item{border-top:1px solid var(--divider)}
.accordion-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--sp3);padding:var(--sp4) var(--sp6);font-size:var(--text-sm);font-weight:600;color:var(--text);text-align:left;transition:background var(--tr)}
.accordion-btn:hover{background:var(--surface-off)}
.accordion-chevron{flex-shrink:0;color:var(--tf);transition:transform var(--tr)}
.accordion-btn[aria-expanded="true"] .accordion-chevron{transform:rotate(180deg)}
.accordion-panel{display:none;padding:0 var(--sp6) var(--sp5)}
.accordion-panel.open{display:block}
.content-block{margin-bottom:var(--sp5)}
.content-block:last-child{margin-bottom:0}
.block-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tf);margin-bottom:var(--sp2)}
.content-block p{font-size:var(--text-sm);color:var(--tm);margin-bottom:var(--sp2);max-width:none}
.example-box{background:var(--surface-off);border-left:3px solid var(--primary);border-radius:0 var(--r-md) var(--r-md) 0;padding:var(--sp3) var(--sp4);margin-bottom:var(--sp2)}
.example-box p{font-size:var(--text-sm);color:var(--text);font-style:italic;margin:0}
.example-box .translation{font-style:normal;color:var(--tm);margin-top:var(--sp1);font-size:var(--text-xs)}
.vocab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:var(--sp2)}
.vocab-item{background:var(--phl);border-radius:var(--r-md);padding:var(--sp2) var(--sp3);font-size:var(--text-xs);font-weight:600;color:var(--primary)}
.vocab-item span{display:block;font-weight:400;color:var(--tm);font-style:italic;margin-top:2px}
.rule-list{list-style:none;display:flex;flex-direction:column;gap:var(--sp2)}
.rule-list li{display:flex;gap:var(--sp3);align-items:flex-start;font-size:var(--text-sm);color:var(--tm)}
.rule-list li::before{content:'→';color:var(--primary);font-weight:700;flex-shrink:0;margin-top:1px}
.formula-box{background:linear-gradient(135deg,var(--phl),color-mix(in srgb,var(--ahl) 60%,transparent));border:1px solid var(--phl);border-radius:var(--r-lg);padding:var(--sp4);font-size:var(--text-sm);font-weight:600;color:var(--text);font-family:var(--font-display);text-align:center;margin-bottom:var(--sp3)}
.tense-table{width:100%;border-collapse:collapse;margin-bottom:var(--sp3);font-size:var(--text-xs)}
.tense-table th{background:var(--phl);color:var(--primary);padding:var(--sp2) var(--sp3);text-align:left;font-weight:700;border:1px solid var(--phl)}
.tense-table td{padding:var(--sp2) var(--sp3);border:1px solid var(--divider);color:var(--tm);vertical-align:top}
.tense-table tr:nth-child(even) td{background:var(--surface-off)}
.badge-row{display:flex;flex-wrap:wrap;gap:var(--sp2);margin-top:var(--sp2)}
.badge{padding:var(--sp1) var(--sp3);border-radius:var(--r-full);font-size:var(--text-xs);font-weight:600}
.b-blue{background:var(--phl);color:var(--primary)}
.b-purple{background:var(--pl);color:var(--purple)}
.b-teal{background:var(--tl);color:var(--teal)}
.b-orange{background:var(--ol);color:var(--orange)}
.b-pink{background:var(--pkl);color:var(--pink)}
.b-amber{background:var(--ahl);color:var(--ah)}
.b-green{background:var(--sl);color:var(--success)}
.highlight-box{border-radius:var(--r-lg);padding:var(--sp4);margin-bottom:var(--sp3);font-size:var(--text-sm)}
.highlight-box.tip{background:var(--ahl);border-left:3px solid var(--accent);color:var(--text)}
.highlight-box.note{background:var(--phl);border-left:3px solid var(--primary);color:var(--text)}
.highlight-box .tip-label{font-weight:700;margin-bottom:var(--sp1)}
.highlight-box.tip .tip-label{color:var(--ah)}
.highlight-box.note .tip-label{color:var(--primary)}

/* ===================================================
   HOME QUICK CARDS
=================================================== */
.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr));gap:var(--sp6);padding-bottom:clamp(var(--sp12),6vw,var(--sp16))}

/* ===================================================
   QUIZ SECTION
=================================================== */
.quiz-trigger-btn{
  display:inline-flex;align-items:center;gap:var(--sp2);
  padding:var(--sp3) var(--sp5);
  background:var(--primary);color:#fff;
  border-radius:var(--r-full);font-size:var(--text-sm);font-weight:700;
  transition:background var(--tr),transform var(--tr),box-shadow var(--tr);
  box-shadow:0 2px 8px color-mix(in srgb,var(--primary) 40%,transparent);
  margin-top:var(--sp2);
}
.quiz-trigger-btn:hover{background:var(--ph);transform:translateY(-1px);box-shadow:0 4px 14px color-mix(in srgb,var(--primary) 50%,transparent)}

/* Quiz modal overlay */
.quiz-overlay{
  display:none;position:fixed;inset:0;z-index:200;
  background:rgba(10,25,41,.65);backdrop-filter:blur(6px);
  padding:var(--sp6);overflow-y:auto;
}
.quiz-overlay.open{display:flex;align-items:flex-start;justify-content:center}
.quiz-modal{
  background:var(--surface2);border-radius:var(--r-2xl);
  width:min(600px,100%);box-shadow:var(--sh-lg);
  overflow:hidden;animation:slideUp .3s cubic-bezier(.16,1,.3,1);
}
@keyframes slideUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
.qm-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--sp5) var(--sp6);
  border-bottom:1px solid var(--divider);
  background:var(--surface);
}
.qm-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--text)}
.qm-close{width:2rem;height:2rem;display:grid;place-items:center;border-radius:var(--r-full);color:var(--tm);transition:background var(--tr)}
.qm-close:hover{background:var(--surface-off)}
.qm-progress-bar{height:4px;background:var(--divider)}
.qm-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--teal));transition:width .4s ease;border-radius:var(--r-full)}
.qm-body{padding:var(--sp6)}
.q-counter{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tf);margin-bottom:var(--sp3)}
.q-text{font-family:var(--font-display);font-size:var(--text-base);font-weight:700;color:var(--text);margin-bottom:var(--sp6);line-height:1.4}
.q-options{display:flex;flex-direction:column;gap:var(--sp3)}
.q-opt{
  display:flex;align-items:center;gap:var(--sp4);
  padding:var(--sp4) var(--sp5);
  border:2px solid var(--border);border-radius:var(--r-xl);
  background:var(--surface);cursor:pointer;
  transition:border-color var(--tr),background var(--tr),transform var(--tr);
  text-align:left;
}
.q-opt:hover:not(:disabled){border-color:var(--primary);background:var(--phl);transform:translateX(2px)}
.q-opt .opt-letter{
  min-width:2rem;height:2rem;display:grid;place-items:center;
  border-radius:var(--r-full);background:var(--surface-off);
  font-size:var(--text-sm);font-weight:700;color:var(--tm);
  transition:all var(--tr);flex-shrink:0;
}
.q-opt .opt-text{font-size:var(--text-sm);color:var(--text)}
.q-opt.correct{border-color:var(--success);background:var(--sl)}
.q-opt.correct .opt-letter{background:var(--success);color:#fff}
.q-opt.wrong{border-color:var(--error);background:var(--el)}
.q-opt.wrong .opt-letter{background:var(--error);color:#fff}
.q-opt.reveal-correct{border-color:var(--success);background:var(--sl)}
.q-opt.reveal-correct .opt-letter{background:var(--success);color:#fff}
.q-opt:disabled{cursor:default}
.q-explanation{
  display:none;margin-top:var(--sp5);
  background:var(--ahl);border-left:3px solid var(--accent);
  border-radius:0 var(--r-lg) var(--r-lg) 0;
  padding:var(--sp4);font-size:var(--text-sm);color:var(--text);
}
.q-explanation.show{display:block}
.q-explanation strong{color:var(--ah)}
.qm-footer{
  display:flex;align-items:center;justify-content:space-between;
  padding:var(--sp5) var(--sp6);border-top:1px solid var(--divider);
  gap:var(--sp3);flex-wrap:wrap;
}
.btn-next{
  padding:var(--sp3) var(--sp6);background:var(--primary);color:#fff;
  border-radius:var(--r-full);font-weight:700;font-size:var(--text-sm);
  transition:background var(--tr),transform var(--tr);
}
.btn-next:hover{background:var(--ph);transform:translateY(-1px)}
.btn-next:disabled{background:var(--border);color:var(--tf);cursor:not-allowed;transform:none}
.q-score-display{font-size:var(--text-xs);font-weight:700;color:var(--tm)}

/* Quiz Result Screen */
.quiz-result{text-align:center;padding:var(--sp8) var(--sp6)}
.result-emoji{font-size:4rem;margin-bottom:var(--sp4)}
.result-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--text);margin-bottom:var(--sp3)}
.result-score{font-size:var(--text-2xl);font-weight:700;font-family:var(--font-display);margin-bottom:var(--sp2)}
.result-score.s-perfect{color:var(--success)}
.result-score.s-good{color:var(--primary)}
.result-score.s-ok{color:var(--accent)}
.result-score.s-low{color:var(--error)}
.result-msg{font-size:var(--text-base);color:var(--tm);max-width:36ch;margin-inline:auto;margin-bottom:var(--sp8)}
.result-btns{display:flex;gap:var(--sp3);justify-content:center;flex-wrap:wrap}
.btn-retry{padding:var(--sp3) var(--sp6);border:2px solid var(--primary);color:var(--primary);border-radius:var(--r-full);font-weight:700;font-size:var(--text-sm);transition:all var(--tr)}
.btn-retry:hover{background:var(--phl)}
.btn-close-result{padding:var(--sp3) var(--sp6);background:var(--primary);color:#fff;border-radius:var(--r-full);font-weight:700;font-size:var(--text-sm);transition:background var(--tr)}
.btn-close-result:hover{background:var(--ph)}

/* Progress badge on card */
.quiz-progress-badge{
  display:inline-flex;align-items:center;gap:var(--sp2);
  padding:var(--sp1) var(--sp3);
  border-radius:var(--r-full);font-size:var(--text-xs);font-weight:700;
  background:var(--sl);color:var(--success);margin-top:var(--sp3);
}
.quiz-progress-badge.partial{background:var(--ahl);color:var(--ah)}
.quiz-progress-badge.none{background:var(--surface-off);color:var(--tf)}

/* ===================================================
   VOCABULARY PAGE
=================================================== */
.vocab-page-header{
  padding-block:clamp(var(--sp8),4vw,var(--sp12)) var(--sp6);
  border-bottom:1px solid var(--divider);margin-bottom:var(--sp6);
}
.vocab-controls{
  display:flex;flex-wrap:wrap;gap:var(--sp3);
  align-items:center;margin-bottom:var(--sp6);
}
.search-wrap-v{
  flex:1;min-width:200px;position:relative;
}
.search-wrap-v svg{position:absolute;left:var(--sp4);top:50%;transform:translateY(-50%);color:var(--tf);pointer-events:none}
.search-input-v{
  width:100%;
  padding:var(--sp3) var(--sp4) var(--sp3) 2.75rem;
  border:1.5px solid var(--border);border-radius:var(--r-full);
  background:var(--surface2);color:var(--text);font-size:var(--text-sm);
  transition:border-color var(--tr),box-shadow var(--tr);
}
.search-input-v::placeholder{color:var(--tf)}
.search-input-v:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 15%,transparent)}
.filter-group{display:flex;gap:var(--sp2);flex-wrap:wrap}
.filter-btn{
  padding:var(--sp2) var(--sp4);border-radius:var(--r-full);
  font-size:var(--text-sm);font-weight:600;cursor:pointer;
  border:1.5px solid var(--border);background:var(--surface2);color:var(--tm);
  transition:all var(--tr);
}
.filter-btn:hover{border-color:var(--primary);color:var(--primary)}
.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.filter-btn.f-noun.active{background:var(--primary);border-color:var(--primary)}
.filter-btn.f-verb.active{background:var(--teal);border-color:var(--teal)}
.filter-btn.f-adj.active{background:var(--purple);border-color:var(--purple)}
.filter-btn.f-k7.active{background:var(--primary);border-color:var(--primary)}
.filter-btn.f-k8.active{background:var(--purple);border-color:var(--purple)}
.filter-btn.f-k9.active{background:var(--teal);border-color:var(--teal)}
.vocab-stats{font-size:var(--text-xs);color:var(--tf);font-weight:600;align-self:center}

/* Vocab Table */
.vocab-table-wrap{overflow-x:auto;border-radius:var(--r-xl);border:1px solid var(--border);box-shadow:var(--sh-sm);margin-bottom:var(--sp12)}
.vocab-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.vocab-table thead th{
  background:var(--surface);padding:var(--sp4) var(--sp5);
  text-align:left;font-weight:700;color:var(--tm);
  font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;
  border-bottom:2px solid var(--divider);white-space:nowrap;
}
.vocab-table tbody td{
  padding:var(--sp4) var(--sp5);
  border-bottom:1px solid var(--divider);
  vertical-align:middle;
}
.vocab-table tbody tr:last-child td{border-bottom:none}
.vocab-table tbody tr{transition:background var(--tr)}
.vocab-table tbody tr:hover{background:var(--surface-off)}
.vt-kelas .kelas-chip{
  display:inline-flex;padding:var(--sp1) var(--sp3);
  border-radius:var(--r-full);font-size:var(--text-xs);font-weight:700;
}
.kelas-chip.k7{background:var(--phl);color:var(--primary)}
.kelas-chip.k8{background:var(--pl);color:var(--purple)}
.kelas-chip.k9{background:var(--tl);color:var(--teal)}
.vt-type .type-chip{
  display:inline-flex;align-items:center;gap:4px;
  padding:var(--sp1) var(--sp3);border-radius:var(--r-full);
  font-size:var(--text-xs);font-weight:700;
}
.type-chip.noun{background:var(--phl);color:var(--primary)}
.type-chip.verb{background:var(--tl);color:var(--teal)}
.type-chip.adjective{background:var(--pl);color:var(--purple)}
.vt-en{font-weight:700;color:var(--text)}
.vt-id{color:var(--tm)}
.vt-bab{color:var(--tf);font-size:var(--text-xs)}
.vocab-no-results{
  text-align:center;padding:var(--sp16);color:var(--tf);
  font-size:var(--text-lg);
}
/* highlight search match */
mark{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--text);border-radius:3px;padding:0 2px}

/* ===================================================
   FOOTER
=================================================== */
.site-footer{border-top:1px solid var(--divider);padding-block:var(--sp8);text-align:center;color:var(--tf);font-size:var(--text-sm)}

/* ===================================================
   ANIMATIONS
=================================================== */
@keyframes fadeInUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.fade-in{animation:fadeInUp .45s cubic-bezier(.16,1,.3,1) both}
.delay-1{animation-delay:.08s}
.delay-2{animation-delay:.16s}
.delay-3{animation-delay:.24s}
