/* MEM owns its layout. The shared base applies site_zoom exactly once. */
body.memorization-page,body.memorization-start-page { background: radial-gradient(ellipse at 90% 10%,#ccefe4 0,transparent 46%),linear-gradient(145deg,#eaf6f1,#f3faf7 65%,#e2f3ef); }
.memorization-root { --mem-green:#207d66; --mem-accent:#35ae8f; --mem-ink:#303746; --mem-muted:#526c66; --mem-border:#d2e5df; color:var(--mem-ink); width:calc(100% - 48px); max-width:1320px; min-width:0; margin:28px auto 48px; font-size:16px; line-height:1.6; }
.memorization-root *, .memorization-root *::before,.memorization-root *::after { box-sizing:border-box; }
.memorization-root [hidden] { display:none !important; }
.memorization-root h1,.memorization-root h2,.memorization-root h3,.memorization-root p { overflow-wrap:anywhere; }
.memorization-root h1 { font-size:clamp(26px,3vw,40px); line-height:1.25; margin:8px 0 16px; letter-spacing:-.4px; }
.memorization-root h2 { font-size:20px; margin:0 0 18px; }
.memorization-root h3 { font-size:19px; line-height:1.45; }
.memorization-root button,.memorization-root input,.memorization-root select { font:inherit; }
.memorization-root .mem-button,.memorization-root button,.memorization-root select { min-height:44px; }
.memorization-root button,.memorization-root .mem-button { display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:10px 18px; border:1px solid #add6c7; border-radius:9px; background:white; color:var(--mem-green); text-decoration:none; cursor:pointer; font-weight:600; line-height:1.4; transition:background-color .18s,border-color .18s; }
.memorization-root button:hover,.memorization-root .mem-button:hover { background:#edf9f3; border-color:var(--mem-accent); }
.memorization-root button:disabled { opacity:.5; cursor:not-allowed; }
.memorization-root .mem-primary { background:var(--mem-green); border-color:var(--mem-green); color:#fff; }
.memorization-root .mem-primary:hover { background:#17614f; color:#fff; }
.memorization-root :is(button,a,input,select):focus-visible { outline:3px solid #155c49; outline-offset:3px; }
.memorization-root .mem-top-nav { display:flex; align-items:center; flex-wrap:wrap; gap:16px; margin-bottom:20px; }
.memorization-root .mem-top-nav > span { color:var(--mem-muted); font-size:14px; letter-spacing:.6px; }
.memorization-root .mem-hero { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:18px; padding:30px 34px; border:1px solid #c9e6db; border-radius:20px; background:linear-gradient(120deg,#def3e9,#eaf8f1); }
.memorization-root .mem-hero-copy { min-width:0; flex:1; }
.memorization-root .mem-eyebrow { margin:0; color:var(--mem-green); font-size:17px; font-weight:700; }
.memorization-root .mem-hero-art { flex:0 1 230px; width:230px; max-width:30%; height:auto; object-fit:contain; }
.memorization-root .mem-config-summary { display:flex; flex-wrap:wrap; gap:8px 12px; color:var(--mem-muted); font-size:14px; }
.memorization-root .mem-config-summary span { padding:4px 10px; border-radius:99px; background:rgba(255,255,255,.68); }
.memorization-root #memorizationSaveStatus { font-size:14px; color:var(--mem-muted); margin:12px 0 20px; }
.memorization-root .mem-card { min-width:0; padding:26px; border:1px solid var(--mem-border); border-radius:14px; background:rgba(255,255,255,.94); box-shadow:0 6px 22px #183e2b08; }
.memorization-root .mem-study-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(270px,.38fr); gap:20px; align-items:start; }
.memorization-root .mem-reading { padding:28px 32px; }
.memorization-root .mem-study-sentence { padding:0 0 18px; margin:0 0 18px; border-bottom:1px solid #e4eee9; }
.memorization-root .mem-study-sentence:last-child { border-bottom:0; margin-bottom:0; }
.memorization-root .mem-english { font-family:Georgia,'Times New Roman',serif; font-size:23px; line-height:1.8; margin:8px 0; }
.memorization-root .mem-chinese { font-size:17px; line-height:1.8; color:#52675f; margin:8px 0 16px; }
.memorization-root .mem-notes { background:#f2fbf6; }
.memorization-root .mem-expression { padding:14px 0; border-top:1px solid var(--mem-border); }
.memorization-root .mem-expression strong { font-size:18px; }
.memorization-root .mem-expression p { margin:6px 0; }
.memorization-root .mem-note { color:var(--mem-muted); font-size:14px; line-height:1.7; }
.memorization-root .mem-review-words { padding:12px; background:#edf8f0; border-radius:8px; color:var(--mem-green); }
.memorization-root .mem-actions { display:flex; justify-content:flex-end; gap:12px; flex-wrap:wrap; margin-top:24px; }
.memorization-root .mem-toolbar,.memorization-root .mem-audio { display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding:16px 20px; margin-bottom:18px; border:1px solid var(--mem-border); border-radius:12px; background:#ffffffde; }
.memorization-root .mem-toolbar label { display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.memorization-root select { max-width:100%; padding:8px 30px 8px 12px; border:1px solid #bad8cd; border-radius:8px; background:white; }
.memorization-root .mem-audio button { padding:8px 14px; font-size:14px; }
.memorization-root .mem-audio input[type=range] { flex:1 1 140px; min-width:0; max-width:240px; min-height:44px; accent-color:var(--mem-green); }
.memorization-root .mem-audio-status { flex-basis:100%; margin:0; font-size:14px; color:var(--mem-muted); }
.memorization-root .mem-dictation-card { min-height:360px; padding:32px; }
.memorization-root .mem-letter-sentence { display:flex; align-items:baseline; flex-wrap:wrap; gap:16px 8px; padding:28px 0 32px; line-height:1.2; }
.memorization-root .mem-word { display:inline-flex; align-items:baseline; gap:3px; max-width:100%; flex-wrap:wrap; }
.memorization-root .mem-letter { width:25px; min-width:25px; height:44px; padding:7px 0; margin:0; border:0; border-bottom:2px solid #baccc5; border-radius:0; background:transparent; color:var(--mem-ink); text-align:center; font-family:Georgia,serif; font-size:24px; line-height:1; }
.memorization-root .mem-letter:focus { border-bottom-color:var(--mem-green); background:#eefaf4; }
.memorization-root .mem-given,.memorization-root .mem-punctuation { font-family:Georgia,serif; font-size:24px; white-space:pre-wrap; }
.memorization-root .mem-mastered { padding:0 5px; border:1px solid #8dccab; border-radius:5px; background:#e5f7ec; color:#21664b; font-family:Georgia,serif; font-size:24px; line-height:1; }
.memorization-root .mem-recovery { margin-top:24px; border-color:#cdb882; background:#fffcf3; }
.memorization-root .mem-recovery button { margin:4px 8px 4px 0; }
.memorization-root .mem-recovery pre { white-space:pre-wrap; overflow-wrap:anywhere; }
.memorization-root #memorizationRoundReport { border:1px solid var(--mem-border); border-radius:14px; background:white; padding:30px; }
.memorization-root #memorizationRoundReport button { margin-left:12px; }
/* Settings use the existing combo structure without importing its global layout. */
body.memorization-start-page .memorization-root { max-width:1080px; }
.memorization-root .combo-start { margin-top:24px; }
.memorization-root .combo-header { margin:24px 0; }
.memorization-root .combo-header-copy { color:var(--mem-muted); }
.memorization-root .combo-card { padding:28px; border:1px solid var(--mem-border); border-radius:18px; background:#fff; }
.memorization-root .mode-name { display:block; font-weight:700; font-size:24px; overflow-wrap:anywhere; }
.memorization-root .mode-name-en { display:block; color:var(--mem-muted); font-size:14px; margin-top:6px; }
.memorization-root .article-match { display:flex; flex-direction:column; gap:6px; margin:22px 0; padding:16px 20px; border:1px solid #c6e5d6; border-radius:10px; background:#f1fbf5; }
.memorization-root .article-match span { color:var(--mem-green); font-size:14px; }
.memorization-root .article-match strong { overflow-wrap:anywhere; }
.memorization-root .combo-settings-panel { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; padding:22px 0 0; margin:0; border:0; border-top:1px solid var(--mem-border); }
.memorization-root .combo-settings-panel legend { padding:0 8px 0 0; font-weight:600; }
.memorization-root .combo-settings-panel label { display:flex; align-items:center; flex-wrap:wrap; gap:10px; min-width:0; min-height:44px; }
.memorization-root .combo-settings-panel input[type=checkbox] { width:20px; height:20px; accent-color:var(--mem-green); }
.memorization-root .combo-start-btn { float:none; margin:24px 0 0 auto; display:flex; min-width:180px; background:var(--mem-green); color:white; }
/* Catalog selectors affect only MEM's own region. */
#memorizationCatalog { width:100%; margin:0; padding:0 0 24px; }
#memorizationCatalog .memorization-catalog-toolbar { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; padding:22px; margin-bottom:20px; border:1px solid var(--mem-border); border-radius:14px; background:#fff; }
#memorizationCatalog .memorization-catalog-toolbar label { display:flex; flex-direction:column; gap:6px; min-width:0; font-weight:600; color:var(--mem-muted); }
#memorizationCatalog .memorization-catalog-toolbar input { width:100%; min-width:0; min-height:44px; padding:8px 12px; border:1px solid #bad8cd; border-radius:8px; }
#memorizationCatalog .memorization-catalog-toolbar button { justify-self:start; min-width:100px; }
#memorizationCatalog .memorization-catalog-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
#memorizationCatalog .memorization-catalog-card { min-width:0; padding:22px; border:1px solid var(--mem-border); border-radius:14px; background:#fff; }
#memorizationCatalog .memorization-catalog-card h3 { margin:0 0 8px; }
#memorizationCatalog .memorization-catalog-card p { color:var(--mem-muted); font-size:14px; }
#memorizationCatalog .memorization-catalog-card a { display:inline-flex; align-items:center; min-height:44px; padding:8px 14px; margin:4px 8px 4px 0; border:1px solid #b3d9c8; border-radius:8px; color:var(--mem-green); text-decoration:none; }
#memorizationCatalog > nav { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-top:24px; }
@media(max-width:1024px) { .memorization-root .mem-study-grid { grid-template-columns:minmax(0,1fr) minmax(230px,.45fr); } .memorization-root .combo-settings-panel { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:767px) { .memorization-root { width:calc(100% - 28px); margin-top:18px; } .memorization-root .mem-hero { padding:24px; } .memorization-root .mem-hero-art { display:none; } .memorization-root .mem-study-grid { grid-template-columns:minmax(0,1fr); } .memorization-root .mem-card,.memorization-root .mem-reading,.memorization-root .mem-dictation-card { padding:22px 18px; } .memorization-root .mem-toolbar,.memorization-root .mem-audio { padding:14px; } #memorizationCatalog .memorization-catalog-toolbar { grid-template-columns:repeat(2,minmax(0,1fr)); padding:16px; } #memorizationCatalog .memorization-catalog-list { grid-template-columns:minmax(0,1fr); } .memorization-root .combo-card { padding:22px 18px; } }
@media(max-width:480px) { .memorization-root .combo-settings-panel,#memorizationCatalog .memorization-catalog-toolbar { grid-template-columns:minmax(0,1fr); } .memorization-root .mem-english { font-size:21px; } .memorization-root .mem-actions button { flex:1 1 auto; } .memorization-root .mem-letter { width:23px; min-width:23px; } .memorization-root .mem-word { gap:2px; } }
@media(prefers-reduced-motion:reduce) { .memorization-root * { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
.memorization-root.mem-report .mem-report-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:18px; }
.memorization-root.mem-report .mem-report-stats strong,.memorization-root.mem-report .mem-report-stats span { display:block; overflow-wrap:anywhere; }
.memorization-root.mem-report .mem-report-stats strong { font-size:26px; }
.memorization-root.mem-report .version-history-card { background:#fff; border:1px solid var(--mem-border); border-radius:10px; box-shadow:0 1px 4px rgba(0,0,0,.06); margin-bottom:24px; }
.memorization-root.mem-report .vh-title { margin:0; padding:12px 18px; font-size:.95rem; font-weight:700; color:var(--mem-green); background:#eef8f4; border-bottom:1px solid var(--mem-border); border-radius:10px 10px 0 0; }
.memorization-root.mem-report .vh-list { display:flex; flex-direction:column; }
.memorization-root.mem-report .vh-item { display:grid; grid-template-columns:minmax(72px,auto) minmax(50px,auto) auto minmax(0,1fr); align-items:center; gap:8px 14px; min-width:0; padding:12px 18px; text-decoration:none; color:var(--mem-ink); border-bottom:1px solid #f1f5f9; font-size:.92rem; }
.memorization-root.mem-report .vh-item:last-child { border-bottom:none; border-radius:0 0 10px 10px; }
.memorization-root.mem-report .vh-item:hover { background:#eef8f4; }
.memorization-root.mem-report .vh-item.vh-current { background:#eff6ff; }
.memorization-root.mem-report .vh-version { grid-column:1; grid-row:1; font-weight:600; }
.memorization-root.mem-report .vh-score { grid-column:2; grid-row:1; font-weight:700; color:#2563eb; }
.memorization-root.mem-report .vh-date { grid-column:4; grid-row:1; justify-self:end; color:var(--mem-muted); font-size:.8rem; overflow-wrap:anywhere; }
.memorization-root.mem-report .vh-current-tag { grid-column:3; grid-row:1; justify-self:start; padding:1px 8px; border-radius:10px; font-size:.72rem; font-weight:600; background:#dbeafe; color:#1e40af; }
@media(max-width:767px) {
  .memorization-root.mem-report .vh-item { grid-template-columns:72px 50px minmax(0,1fr); padding:11px 14px; gap:6px 8px; }
  .memorization-root.mem-report .vh-date { grid-column:1 / -1; grid-row:2; justify-self:start; }
}
.memorization-root.mem-report .mem-report-sentence { display:flex; flex-wrap:wrap; gap:10px; margin:20px 0; }
.memorization-root.mem-report .mem-report-word { max-width:100%; display:flex; flex-direction:column; padding:10px 14px; border:1px solid; border-radius:8px; overflow-wrap:anywhere; }
.memorization-root.mem-report .mem-report-word-locked { color:#4b5563; background:#f3f4f6; }
.memorization-root.mem-report .mem-report-word-correct { color:#166534; background:#ecfdf5; }
.memorization-root.mem-report .mem-report-word-wrong { color:#991b1b; background:#fef2f2; }
.memorization-root.mem-report .mem-hero-copy,.memorization-root.mem-report h1,.memorization-root.mem-report h2 { min-width:0; overflow-wrap:anywhere; }

/* Split MEM entries top-to-bottom, then left-to-right like the TOEFL lists. */
#memorizationCatalog .memorization-catalog-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
#memorizationCatalog .memorization-catalog-column { min-width:0; }
#memorizationCatalog .memorization-catalog-column + .memorization-catalog-column { border-left:1px solid #e5e7eb; }
#memorizationCatalog .memorization-catalog-table { width:100%; min-width:0; table-layout:fixed; }
#memorizationCatalog .memorization-catalog-table .qb-col-type { width:52px; }
#memorizationCatalog .memorization-catalog-table .qb-col-num { width:54px; }
#memorizationCatalog .memorization-catalog-table .qb-col-topic { width:auto; }
#memorizationCatalog .memorization-catalog-table .qb-col-status { width:84px; }
#memorizationCatalog .memorization-catalog-table .qb-col-action { width:76px; }
#memorizationCatalog .memorization-catalog-table th,
#memorizationCatalog .memorization-catalog-table td { padding-left:8px; padding-right:8px; }
#memorizationCatalog .memorization-catalog-table td:nth-child(3) { white-space:normal; overflow-wrap:break-word; }
@media(max-width:1100px) {
    #memorizationCatalog .memorization-catalog-columns { grid-template-columns:minmax(0,1fr); }
    #memorizationCatalog .memorization-catalog-column + .memorization-catalog-column { border-left:0; }
    #memorizationCatalog .memorization-catalog-column + .memorization-catalog-column thead { display:none; }
}
@media(max-width:480px) {
    #memorizationCatalog .memorization-catalog-table .qb-col-type { width:42px; }
    #memorizationCatalog .memorization-catalog-table .qb-col-num { width:42px; }
    #memorizationCatalog .memorization-catalog-table .qb-col-status { width:64px; }
    #memorizationCatalog .memorization-catalog-table .qb-col-action { width:62px; }
}
