:root{--primary:#4467F5;--light-blue:#EEF1FD;--dark-body:#1A1A2E;--text-body:#1A1A2E;--mid-grey:#6B7280;--white:#FFFFFF;--green:#16A34A;--green-bg:#DCFCE7;--red:#DC2626;--border:#E5E7EB}
/* Word blocks and the record-and-compare buttons: copied from the speaking lessons' vocabulary section (speak/hobbies) so the pages look the same. */
.word-block { background: #F9FAFB; border-left: 3px solid var(--primary);
    border-radius: 8px; padding: 14px 18px; }
.w-head { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.w-icon { display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; background: var(--light-blue);
    border-radius: 50%; flex-shrink: 0; }
.w-icon svg { width: 22px; height: 22px; display: block; }
.w-term { font-family: 'Raleway', Arial, sans-serif; color: var(--primary); font-weight: 800;
    font-size: 17px; line-height: 1.3; margin: 0; }
.w-example { color: var(--dark-body); font-size: 15px; line-height: 1.6;
    margin: 2px 0 10px; font-style: italic; }
.w-example strong { font-style: normal; font-weight: 700; color: var(--primary);
    background: var(--light-blue); border-radius: 4px; padding: 1px 3px;
    margin: 0 -2px; }
.w-reveal { display: inline-flex; align-items: center; gap: 8px; margin-top: 10px;
    background: #FFFFFF; border: 1px dashed var(--primary); border-radius: 30px;
    padding: 8px 18px 8px 10px; cursor: pointer; font-family: 'Raleway', sans-serif;
    font-size: 13.5px; font-weight: 600; color: var(--primary); }
.w-reveal:hover { background: var(--light-blue); }
.w-reveal[hidden] { display: none; }
.w-reveal-mark { display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 50%; background: var(--light-blue);
    color: var(--primary); font-weight: 700; font-size: 13px; }
.w-gloss { color: var(--dark-body); font-size: 14.5px; line-height: 1.5;
    margin: 10px 0 0; padding: 10px 14px; background: var(--light-blue);
    border-radius: 8px; }
.w-gloss::before { content: "meaning"; display: block; font-size: 11px;
    font-weight: 700; color: var(--primary); letter-spacing: 0.1em;
    text-transform: uppercase; margin-bottom: 4px; }
.w-gloss[hidden] { display: none; }
.w-self { display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
    margin-top: 10px; }
.w-self[hidden] { display: none; }
.w-self-q { font-size: 12.5px; font-weight: 700; color: var(--text-body);
    margin-right: 2px; }
.w-self-btn { background: #FFFFFF; border: 1.5px solid #D1D5DB;
    border-radius: 30px; padding: 6px 16px; cursor: pointer;
    font-family: 'Raleway', sans-serif; font-size: 13px; font-weight: 600;
    color: var(--text-body); }
.w-self-btn:hover { border-color: var(--primary); color: var(--primary); }
.w-self-btn.chosen[data-know="knew"] { background: #DCFCE7; border-color: #16A34A;
    color: #14532D; }
.w-self-btn.chosen[data-know="guessed"] { background: #FEF3C7; border-color: #B45309;
    color: #92400E; }
.w-self-btn.chosen[data-know="wrong"] { background: #FDECEC; border-color: #DC2626;
    color: #B91C1C; }
.w-colls { font-size: 13.5px; color: var(--text-body); line-height: 1.55; }
.w-collab { font-size: 11px; font-weight: 700; color: var(--primary);
    letter-spacing: 0.1em; text-transform: uppercase; margin-right: 6px; }
.w-colls .col { display: inline-block; padding: 1px 2px; }
/* ---- Audio and record-and-compare layer. Added by add_audio.py ---- */
.aud-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 12px}
/* v9: the term row is now the last audio thing in the card, so it needs
   its space above and none below. */
.word-block .aud-row{margin:12px 0 0}
/* v9: pronunciation self-check. Shown only once the learner has recorded a
   take or played the model, so nobody rates a word they have not attempted.
   No red in this layer: Brand.md reserves #DC2626, and "come back to this" is
   a plan, not an error. */
.w-say{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}
.w-say[hidden]{display:none!important}
.w-say-q{font-size:12.5px;font-weight:700;color:var(--text-body);margin-right:2px}
.w-say-btn{background:#FFFFFF;border:1.5px solid #D1D5DB;border-radius:30px;padding:6px 16px;
  cursor:pointer;font-family:'Raleway',sans-serif;font-size:13px;font-weight:600;color:var(--text-body)}
.w-say-btn:hover{border-color:var(--primary);color:var(--primary)}
.w-say-btn.chosen[data-say="close"]{background:#DCFCE7;border-color:#16A34A;color:#14532D}
.w-say-btn.chosen[data-say="revisit"]{background:#FEF3C7;border-color:#B45309;color:#92400E}
/* the gap row is a baseline flex line; let it wrap so the controls sit on
   their own line and the sentence keeps the full container width */
.gap-sentence{flex-wrap:wrap}
.gap-sentence .aud-row{flex:0 0 100%;margin:8px 0 0;padding-left:38px}
.aud-btn{display:inline-flex;align-items:center;gap:7px;font-family:'Raleway',sans-serif;font-weight:600;
  font-size:13px;line-height:1;border:1px solid var(--border);background:var(--white);color:var(--primary);
  border-radius:20px;padding:8px 14px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.aud-btn:hover{background:var(--light-blue)}
.aud-btn[hidden]{display:none!important}
.aud-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.aud-btn svg{width:13px;height:13px;flex:0 0 13px}
/* The model button is plainly off until they have said it themselves, and
   plainly blue once they have. The change has to be visible at a glance. */
.aud-btn.is-locked{color:var(--mid-grey);border-style:dashed;border-color:#D8DBE3;background:#F4F5F8}
.aud-btn.is-locked:hover{background:#ECEEF3}
.aud-model:not(.is-locked){color:var(--primary);border-color:#C3CEFB;background:var(--white)}
.aud-model:not(.is-locked):hover{background:var(--light-blue);border-color:var(--primary)}
.aud-btn.is-playing{background:var(--light-blue);border-color:var(--primary)}
/* No red anywhere in this layer. Brand.md reserves #DC2626 for its two
   registered uses, and a red record button reads as an error state. */
.aud-rec{color:var(--green);border-color:#BBE6C7}
.aud-rec:hover{background:var(--green-bg)}
.aud-rec.is-recording{background:var(--green);border-color:var(--green);color:#fff}
.aud-rec.is-recording:hover{background:var(--green)}
.aud-mine{color:var(--dark-body);border-color:#C7CBD9}
.aud-mine:hover{background:#F1F2F6}
.aud-hint{flex-basis:100%;font-size:12.5px;color:var(--mid-grey);margin:2px 0 0}
.aud-hint button{font-family:'Raleway',sans-serif;font-size:12.5px;font-weight:600;color:var(--primary);
  background:none;border:0;padding:0 0 0 4px;cursor:pointer;text-decoration:underline}
.aud-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:currentColor}
.aud-rec.is-recording .aud-dot{animation:aud-pulse 1s infinite}
@keyframes aud-pulse{0%,100%{opacity:1}50%{opacity:.25}}
.aud-banner{background:var(--light-blue);border-radius:10px;padding:12px 16px;font-size:13.5px;
  color:var(--dark-body);margin-bottom:18px}
.aud-banner strong{font-family: 'Raleway', Arial, sans-serif}
.aud-privacy{font-size:12.5px;color:var(--mid-grey);margin-top:10px}
.aud-take{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--border)}
.aud-take-text{flex:1 1 220px;font-size:14px;color:var(--text-body);min-width:0}
.aud-take-text em{font-style:normal;font-weight:600;color:var(--dark-body)}
.aud-empty{font-size:13.5px;color:var(--mid-grey)}
@media (max-width:520px){
  .gap-sentence .aud-row{padding-left:0}
  .aud-btn{padding:8px 12px}
}

/* ---- Overrides from the lessons (pastel red, green model button and meaning panel) ---- */
.aud-row .aud-model:not(.is-locked){color:#14532D;border-color:#16A34A;background:var(--white)}
.aud-row .aud-model:not(.is-locked):hover{background:#DCFCE7;border-color:#14532D}
.w-say .w-say-btn.chosen[data-say="revisit"]{background:#FDF1EF;border-color:#E4796F;color:#7F1D1D}
.word-block .w-self-btn.chosen[data-know="wrong"]{background:#FDF1EF;border-color:#E4796F;color:#7F1D1D}
.w-gloss{background:#DCFCE7;color:var(--dark-body)}
.w-gloss::before{color:#14532D}

/* ---- Page frame (public, no sign-in) ---- */
*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:'Raleway',Arial,sans-serif;color:var(--text-body);background:#F9FAFE;line-height:1.6}
.wd{max-width:820px;margin:0 auto;padding:20px 16px 60px}
.wd-top{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:22px}
.wd-top strong{color:var(--primary);font-size:18px}
.wd-top .back{color:#2f4fd6;font-weight:800;text-decoration:none;padding:8px 12px;border:1px solid #b9c9ff;border-radius:11px;background:#fff;min-height:44px;display:inline-flex;align-items:center}
h1,h2{font-family:'Lora',Georgia,serif;font-weight:600;color:var(--dark-body);line-height:1.25}
h1{font-size:30px;margin:0 0 10px}
h2{font-size:24px;margin:34px 0 10px}
.wd-kicker{font-size:12px;color:var(--primary);font-weight:700;letter-spacing:1px;text-transform:uppercase}
.wd-intro{font-size:16px;line-height:1.7}
.wd-note{background:var(--light-blue);border-radius:10px;padding:12px 16px;font-size:14px;color:var(--dark-body);margin:14px 0}
.word-block{scroll-margin-top:12px}
.w-head{flex-wrap:wrap}
.w-num{font-size:12px;font-weight:700;color:var(--mid-grey);min-width:26px}
.w-ipa{font-size:14px;color:var(--mid-grey)}
.w-pos{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);background:var(--light-blue);border-radius:20px;padding:2px 9px}
.w-watch{margin:8px 0 0;font-size:13.5px;color:var(--text-body)}
.w-watch strong{color:var(--dark-body)}
.w-colls{margin-top:2px}
.aud-sent{margin-left:auto}
.wd-sent-row{margin:0 0 8px}

/* ---- Gap quiz ---- */
.gq-list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:10px}
.gq-list li{background:#fff;border:1px solid var(--border);border-radius:10px;padding:11px 14px;font-size:15.5px;line-height:1.9;color:var(--dark-body)}
.gap{display:inline-block;min-width:74px;min-height:30px;vertical-align:middle;text-align:center;border:2px dashed #AFC0FA;border-radius:8px;background:#F4F6FF;padding:0 8px;line-height:26px;font-weight:700;margin:0 3px}
.gap:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.gap.over{background:var(--light-blue);border-color:var(--primary)}
.gap.right{border-style:solid;border-color:#16A34A;background:#DCFCE7;color:#14532D}
.gap.no{animation:wd-shake .35s;border-color:#E4796F;background:#FDF1EF}
@keyframes wd-shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.tray{position:sticky;bottom:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:16px 0;padding:12px;background:#F9FAFB;border:1px solid var(--border);border-radius:12px;box-shadow:0 -8px 20px rgba(26,26,46,.10)}
.chip{font-family:'Raleway',Arial,sans-serif;font-weight:700;font-size:14px;color:var(--primary);background:#fff;border:1.5px solid #C3CEFB;border-radius:20px;padding:7px 15px;cursor:grab}
.chip:hover{background:var(--light-blue)}
.chip.sel{background:var(--primary);color:#fff;border-color:var(--primary)}
.chip.used{opacity:.35;pointer-events:none}
.gq-msg{min-height:22px;font-size:14px;color:var(--mid-grey);text-align:center}

/* ---- Results and report ---- */
.wd-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin:14px 0}
.wd-card h3{font-family:'Raleway',Arial,sans-serif;font-weight:800;margin:0 0 8px;font-size:18px;color:var(--dark-body)}
.wd-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:0;padding:0;list-style:none}
.wd-stats li{background:var(--light-blue);border-radius:10px;padding:10px 14px;font-size:14px}
.wd-stats strong{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--primary)}
.wd-first{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.wd-first a{display:inline-block;padding:4px 12px;border-radius:20px;background:#FDF1EF;border:1px solid #E4796F;color:#7F1D1D;font-weight:700;text-decoration:none;font-size:14px}
.wd-form label{display:block;font-weight:700;font-size:14px;margin:0 0 4px;color:var(--dark-body)}
.wd-form input[type=email]{width:100%;max-width:420px;font:inherit;padding:11px 13px;border:1.5px solid #D1D5DB;border-radius:10px}
.wd-form .consent{display:flex;gap:10px;align-items:flex-start;margin:14px 0;font-size:14px;font-weight:400}
.wd-form .consent input{margin-top:4px;width:18px;height:18px;flex:none}
.wd-btn{font:inherit;font-weight:700;color:#fff;background:var(--primary);border:0;border-radius:10px;padding:12px 22px;cursor:pointer;min-height:44px}
.wd-btn:disabled{opacity:.6;cursor:default}
.wd-status{margin-top:10px;font-size:14px;font-weight:600}
.wd-status.ok{color:#14532D}.wd-status.bad{color:#7F1D1D}
.wd-small{font-size:12.5px;color:var(--mid-grey);margin:10px 0 0}
.wd-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;list-style:none;padding:0;margin:18px 0}
.wd-groups a{display:block;background:#fff;border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:10px;padding:14px 16px;text-decoration:none;color:var(--dark-body);font-weight:700}
.wd-groups a span{display:block;font-weight:400;font-size:13px;color:var(--mid-grey);margin-top:2px}
.wd-groups a:hover{background:var(--light-blue)}
@media (max-width:560px){h1{font-size:25px}.tray{padding:9px;gap:6px}.chip{padding:7px 12px}}
button,input,select,textarea{font-family:'Raleway',Arial,sans-serif}

/* ---- Five words at a time: progress, navigation, slide between panels, report ---- */
[hidden]{display:none!important}
.wd-prog{text-align:center;margin:22px 0 14px}
.wd-prog-h{font-size:26px;margin:0 0 8px;outline:none}
.wd-prog-sub{margin:8px 0 0;font-size:14px;color:var(--mid-grey)}
.wd-dots{display:flex;justify-content:center;gap:8px}
.wd-dots span{width:12px;height:12px;border-radius:50%;background:#D9DFF7;border:2px solid #D9DFF7}
.wd-dots span.done{background:var(--primary);border-color:var(--primary)}
.wd-dots span.now{background:#fff;border-color:var(--primary)}
.wd-bar{height:6px;border-radius:6px;background:#E3E8FB;margin:12px auto 0;max-width:420px;overflow:hidden}
.wd-bar i{display:block;height:100%;background:var(--primary);border-radius:6px;transition:width .35s ease}
.word-list{display:flex;flex-direction:column;gap:14px}
.wd-nav{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;margin:22px 0 6px}
.wd-nav-msg{flex:0 0 100%;text-align:center;margin:0 0 4px;font-size:16px;font-weight:700;line-height:1.45;color:var(--dark-body);background:#FFF4CC;border:1.5px solid #F0CF6B;border-radius:12px;padding:10px 14px}
.wd-nav-msg.is-done{background:var(--green-bg);border-color:#86D9A3;color:#14532D}
.wd-nav-msg[hidden]{display:none}
.wd-nav-msg.nudge{animation:wd-shake .35s}
.wd-btn-ghost{background:#fff;color:var(--primary);border:1.5px solid #C3CEFB}
.wd-btn[aria-disabled="true"]{background:#E2E4EA;color:#5C6272;border:1.5px dashed #AEB3C2;box-shadow:none;cursor:not-allowed}
.wd-nawl{background:#EEF1FD;border:1.5px solid #C3CEFB;border-radius:14px;padding:14px 16px;margin:14px 0;line-height:1.55}
.wd-nawl a{font-weight:800}
.wd-nawl-line{font-size:14.5px;margin:6px 0 12px}
.wd-dlg-hint{font-size:14px;color:var(--mid-grey)}
.wd-btn:focus-visible{outline:3px solid var(--dark-body);outline-offset:2px}
a.wd-btn{display:inline-flex;align-items:center;text-decoration:none}
.wd-stage{transition:transform .35s ease-in,opacity .35s ease-in}
.wd-stage.is-out{transform:translateY(-40px);opacity:0}
.wd-stage.is-below{transform:translateY(40px);opacity:0;transition:none}
.wd-stage.is-in{transition:transform .35s ease-out,opacity .35s ease-out}
@media (prefers-reduced-motion:reduce){.wd-stage,.wd-bar i{transition:none!important}}
.wd-report{text-align:center}
.wd-report h2{outline:none}
.wd-sum{background:#fff;border:1px solid var(--border);border-radius:14px;padding:20px 18px;margin:18px 0}
.wd-sum h2{margin:4px 0 14px}
.wd-tiles{list-style:none;padding:0;margin:0 0 12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.wd-tiles li{background:var(--light-blue);border-radius:10px;padding:12px 8px;font-size:14px}
.wd-tiles strong{display:block;font-family:'Lora',Georgia,serif;font-size:30px;color:var(--primary);line-height:1.1}
.wd-rep-note,.wd-rep-pron{font-size:15px;margin:10px 0}
.wd-rep-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px}
.wd-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:12px;text-align:left;font-size:14px}
.wd-table th,.wd-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}
.wd-table thead th{background:var(--light-blue);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--primary)}
.wd-table tbody th{font-weight:700}
.wd-table tr.work{background:#FDF1EF}
.r-word{color:var(--primary);font-weight:800}
.r-tag{display:block;font-size:11px;font-weight:700;color:#7F1D1D;text-transform:uppercase;letter-spacing:.06em}
.r-pill{display:inline-block;border-radius:20px;padding:2px 10px;font-size:13px;font-weight:600;background:#F3F4F6}
.r-knew,.r-q-correct{background:#DCFCE7;color:#14532D}
.r-guessed{background:#FEF3C7;color:#92400E}
.r-wrong,.r-q-wrong{background:#FDF1EF;color:#7F1D1D}
.wd-report .wd-save{text-align:center}
@media (max-width:560px){
  .wd-prog-h{font-size:22px}
  .wd-table,.wd-table thead,.wd-table tbody,.wd-table tr,.wd-table th,.wd-table td{display:block}
  .wd-table thead{position:absolute;left:-9999px}
  .wd-table tr{border-bottom:1px solid var(--border);padding:8px 0}
  .wd-table th,.wd-table td{border:0;padding:3px 12px}
  .wd-table td::before{content:attr(data-label);display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mid-grey)}
  .wd-nav .wd-btn{flex:1 1 100%}
}

/* ---- Weak forms: short function words are practised in a sentence, and "the" has an explanation dialog ---- */
.w-weak{margin-top:12px}
.w-weak-lab{display:block;font-size:11px;font-weight:700;color:var(--primary);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px}
.w-weak-item{background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-top:8px}
.w-weak-s{margin:0;font-size:16px;line-height:1.6;color:var(--dark-body)}
.w-weak-s strong{color:var(--primary);background:var(--light-blue);border-radius:4px;padding:1px 4px}
.w-weak-ipa{font-size:13px;color:var(--mid-grey);margin-right:6px}
.w-weak-note{margin:6px 0 0;font-size:13.5px;line-height:1.55;color:var(--text-body)}
.w-weak-item .aud-row{margin:10px 0 0}
.w-info{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--primary);background:#fff;color:var(--primary);font-family:'Lora',Georgia,serif;font-style:italic;font-weight:700;font-size:15px;line-height:1;cursor:pointer;margin-left:auto}
.w-info:hover{background:var(--light-blue)}
.w-info:focus-visible,.wd-dialog button:focus-visible{outline:3px solid var(--dark-body);outline-offset:2px}
.wd-dialog{width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto;border:0;border-radius:14px;padding:22px 20px;color:var(--dark-body);font-family:'Raleway',Arial,sans-serif;box-shadow:0 20px 60px rgba(26,26,46,.35)}
.wd-dialog::backdrop{background:rgba(26,26,46,.55)}
.wd-dialog h2{margin:0 0 10px;font-size:22px;outline:none}
.wd-dialog p{margin:8px 0;font-size:15px;line-height:1.6}
.wd-dlg-row{display:flex;gap:12px;align-items:flex-start;background:var(--light-blue);border-radius:10px;padding:10px 12px;margin:10px 0}
.wd-dlg-row p{margin:0}
.wd-dlg-row strong{color:var(--primary)}
.wd-dialog .wd-btn{margin-top:8px}
.wd-dlg-row .aud-sent{margin-left:0;flex:none}
