:root{
  --bg1:#0a1a2f; --bg2:#0f2d4d; --bg3:#08203a;
  --panel:rgba(255,255,255,.06); --border:rgba(255,255,255,.13);
  --accent:#4ea1ff; --accent2:#8de3a4; --warn:#ffb347; --danger:#ff6b6b;
  --text:#eef6ff; --muted:#9fc0e2;
}
*{box-sizing:border-box;}
html,body{margin:0;height:100%;font-family:'Segoe UI',-apple-system,system-ui,'Hiragino Sans','Yu Gothic UI',sans-serif;
  color:var(--text);background:linear-gradient(135deg,var(--bg1),var(--bg2) 50%,var(--bg3));}

/* Material Symbols 基本サイズ */
.material-symbols-outlined{
  font-variation-settings:'FILL' 0,'wght' 400,'GRAD' 0,'opsz' 24;
  vertical-align:middle;font-size:1.15em;line-height:1;
}

.app{display:flex;flex-direction:column;height:100vh;}
.topbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.2rem;
  background:rgba(0,0,0,.25);border-bottom:1px solid var(--border);}
.topbar h1{margin:0;font-size:1.05rem;display:flex;align-items:center;gap:.45rem;}
.topbar .home{color:var(--muted);text-decoration:none;font-size:.9rem;
  display:inline-flex;align-items:center;gap:.3rem;}
.topbar .home:hover{color:var(--accent);}
.topbar .spacer{flex:1;}

.tabs{display:flex;gap:.4rem;background:rgba(0,0,0,.18);padding:.5rem 1rem;
  border-bottom:1px solid var(--border);flex-wrap:wrap;}
.tab{padding:.55rem 1rem;border-radius:8px;border:1px solid transparent;cursor:pointer;
  background:transparent;color:var(--muted);font-size:.95rem;transition:.15s;
  display:inline-flex;align-items:center;gap:.4rem;}
.tab:hover{color:var(--text);}
.tab.active{background:rgba(78,161,255,.15);border-color:var(--accent);color:var(--text);}

.panel{flex:1;min-height:0;overflow:hidden;display:flex;}
.panel:not(.active){display:none !important;}

/* ----- subject filter bar (共通) ----- */
.subj-bar{display:flex;gap:.4rem;padding:.6rem 0;flex-wrap:wrap;}
.subj-btn{padding:.4rem .85rem;border-radius:20px;border:1px solid var(--border);
  background:rgba(255,255,255,.04);color:var(--muted);cursor:pointer;font-size:.85rem;
  display:inline-flex;align-items:center;gap:.35rem;transition:.12s;}
.subj-btn:hover{color:var(--text);border-color:var(--accent);}
.subj-btn.active{background:rgba(78,161,255,.18);color:var(--text);border-color:var(--accent);}

/* ----- 教材閲覧 (PDF) ----- */
.pdf-panel{width:100%;}
.pdf-side{width:280px;border-right:1px solid var(--border);
  background:rgba(0,0,0,.22);overflow-y:auto;padding:.7rem;}
.pdf-side .item{display:flex;align-items:center;gap:.7rem;padding:.7rem .85rem;
  border-radius:10px;cursor:pointer;background:rgba(255,255,255,.04);
  border:1px solid var(--border);margin-bottom:.5rem;color:var(--text);transition:.12s;}
.pdf-side .item:hover{border-color:var(--accent);background:rgba(78,161,255,.08);}
.pdf-side .item.active{border-color:var(--accent);background:rgba(78,161,255,.18);
  box-shadow:0 4px 14px rgba(78,161,255,.15);}
.pdf-side .item .icon{font-size:1.8rem;width:2rem;text-align:center;color:var(--accent);}
.pdf-side .item .label{display:flex;flex-direction:column;gap:.15rem;}
.pdf-side .item .title{font-weight:600;font-size:.96rem;}
.pdf-side .item .sub{font-size:.78rem;color:var(--muted);}
.pdf-stage{flex:1;display:flex;flex-direction:column;background:#1a1f2a;min-width:0;}
.bar{display:flex;align-items:center;gap:.6rem;padding:.55rem .9rem;
  background:rgba(0,0,0,.35);border-bottom:1px solid var(--border);
  color:var(--muted);font-size:.9rem;}
.bar .tag{padding:.2rem .65rem;border-radius:6px;background:rgba(141,227,164,.12);
  color:var(--accent2);font-size:.78rem;font-weight:600;}
.bar .name{color:var(--text);}
.bar .open{margin-left:auto;color:var(--accent);text-decoration:none;font-size:.85rem;
  display:inline-flex;align-items:center;gap:.3rem;}
.bar .open:hover{text-decoration:underline;}
iframe{flex:1;border:none;background:#fff;width:100%;}

/* ----- トピック解説 ----- */
.topics-panel{width:100%;}
.topics-side{width:280px;border-right:1px solid var(--border);
  background:rgba(0,0,0,.22);overflow-y:auto;padding:.7rem;display:flex;flex-direction:column;}
.topics-list{display:flex;flex-direction:column;gap:.25rem;margin-top:.2rem;}
.topics-list .item{padding:.65rem .85rem;border-radius:8px;cursor:pointer;
  color:var(--muted);font-size:.94rem;transition:.12s;border:1px solid transparent;}
.topics-list .item:hover{background:rgba(255,255,255,.04);color:var(--text);}
.topics-list .item.active{background:rgba(78,161,255,.18);color:var(--text);
  border-color:var(--accent);}
.topics-content{flex:1;overflow-y:auto;padding:1.4rem 2rem;min-width:0;}
.topics-content h2{margin:0 0 .6rem;}
.topics-content .lead{color:var(--muted);margin:0 0 1.5rem;}
.topics-content section{margin-bottom:1.4rem;padding:1rem 1.2rem;border-radius:12px;
  background:var(--panel);border:1px solid var(--border);}
.topics-content section h3{margin:0 0 .5rem;color:var(--accent2);font-size:1.05rem;}
.topics-content section p{margin:0;line-height:1.75;color:#dbe9fb;}

/* ----- フラッシュカード ----- */
.flash-panel{align-items:center;justify-content:center;padding:2rem;width:100%;}
.flash-wrap{max-width:640px;width:100%;text-align:center;}
.flash-meta{color:var(--muted);margin:.7rem 0 1rem;font-size:.9rem;}
.flash-card{background:var(--panel);border:1px solid var(--border);border-radius:18px;
  padding:2.4rem 2rem;min-height:240px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:1.15rem;line-height:1.6;user-select:none;transition:.2s;}
.flash-card:hover{border-color:var(--accent);box-shadow:0 8px 24px rgba(78,161,255,.15);}
.flash-card .hint{display:block;margin-top:1rem;color:var(--muted);font-size:.78rem;}
.flash-card.show-answer{background:rgba(141,227,164,.08);border-color:var(--accent2);}
.flash-card.show-answer .hint{color:var(--accent2);}
.flash-actions{margin-top:1.2rem;display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;}

.btn{padding:.6rem 1.2rem;border-radius:10px;border:none;cursor:pointer;font-weight:600;
  font-size:.95rem;transition:.15s;display:inline-flex;align-items:center;gap:.4rem;}
.btn.primary{background:linear-gradient(135deg,var(--accent),#2d6fd1);color:#fff;}
.btn.ghost{background:transparent;border:1px solid var(--border);color:var(--text);}
.btn.ghost:hover{border-color:var(--accent);}
.btn.success{background:linear-gradient(135deg,#5cd58b,#2fa162);color:#06170d;}
.btn.warn{background:linear-gradient(135deg,#ffce6e,#e8a13a);color:#3a1f00;}

/* ----- クイズ ----- */
.quiz-panel{justify-content:center;width:100%;padding:1.5rem 2rem 2rem;overflow-y:auto;
  flex-direction:column;align-items:center;}
.quiz-wrap{max-width:720px;width:100%;}
.quiz-bar{display:flex;justify-content:space-between;color:var(--muted);font-size:.9rem;
  margin-bottom:.6rem;}
.quiz-progress{height:6px;background:rgba(255,255,255,.07);border-radius:3px;overflow:hidden;
  margin-bottom:1.2rem;}
.quiz-progress .bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));
  width:0%;transition:width .25s;padding:0;}
.quiz-q{background:var(--panel);border:1px solid var(--border);border-radius:14px;
  padding:1.3rem 1.5rem;margin-bottom:1rem;font-size:1.05rem;line-height:1.6;}
.quiz-choices{display:grid;gap:.55rem;}
.choice{display:block;padding:.85rem 1rem;border-radius:10px;border:1px solid var(--border);
  background:rgba(255,255,255,.04);cursor:pointer;color:var(--text);text-align:left;
  font-size:.98rem;transition:.12s;}
.choice:hover{border-color:var(--accent);background:rgba(78,161,255,.08);}
.choice.correct{border-color:var(--accent2);background:rgba(141,227,164,.18);}
.choice.wrong{border-color:var(--danger);background:rgba(255,107,107,.15);}
.choice.disabled{cursor:default;}
.quiz-explain{margin-top:1rem;padding:.9rem 1.1rem;border-radius:10px;
  background:rgba(78,161,255,.08);border-left:3px solid var(--accent);color:#dbe9fb;
  line-height:1.6;display:none;}
.quiz-explain.show{display:block;}
.quiz-foot{display:flex;justify-content:flex-end;align-items:center;margin-top:.8rem;}
.quiz-result{text-align:center;padding:2rem;background:var(--panel);border-radius:14px;
  border:1px solid var(--border);max-width:520px;margin:0 auto;}
.quiz-result h2{margin:.5rem 0;}
.quiz-result .big{font-size:3rem;color:var(--accent2);font-weight:700;}

@media (max-width:780px){
  .pdf-panel,.topics-panel{flex-direction:column;}
  .pdf-side,.topics-side{width:100%;max-height:30vh;border-right:none;
    border-bottom:1px solid var(--border);}
}
