:root{
  --ink:#0b3767;--ink2:#173f69;--muted:#667c96;--line:#d7e3ef;--bg:#f2f7fc;--card:#fff;
  --blue:#1769aa;--blue2:#0e4f8d;--green:#188560;--green-bg:#eaf8f1;--warn:#b66b00;--warn-bg:#fff6df;
  --bad:#b43a30;--bad-bg:#fff0ef;--shadow:0 14px 34px rgba(19,62,100,.08);--radius:20px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,"Noto Sans Thai",sans-serif;color:#153552}
body{user-select:none;-webkit-user-select:none}
input,textarea{user-select:text;-webkit-user-select:text}
button,input,textarea{font:inherit}
button{cursor:pointer}
button:disabled{opacity:.48;cursor:not-allowed}
.topbar{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:13px 24px;gap:18px}
.brand{display:flex;gap:12px;align-items:center}.logo{width:44px;height:44px;border-radius:14px;background:linear-gradient(145deg,#0d4b86,#2f78bd);display:grid;place-items:center;color:#fff;font-weight:900}.brand h1{font-size:1.08rem;margin:0;color:#123d69}.brand .small{font-size:.72rem;color:#667c96}
.topstats{display:flex;gap:9px;flex-wrap:wrap}.stat{border:1px solid var(--line);border-radius:13px;padding:7px 12px;background:#fff;text-align:center;min-width:74px}.stat b{display:block;color:var(--ink);font-size:1rem}.stat span{font-size:.61rem;font-weight:800;color:var(--muted);letter-spacing:.06em}
.shell{max-width:1260px;margin:0 auto;padding:18px 18px 34px}.layout{display:grid;grid-template-columns:230px 1fr;gap:18px;align-items:start}.sidebar{position:sticky;top:88px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.side-card{padding:16px}.progress-ring{width:98px;height:98px;border-radius:50%;margin:2px auto 16px;background:conic-gradient(#2a73ba var(--p,0%),#e5edf6 0);position:relative;display:grid;place-items:center}.progress-ring:after{content:"";position:absolute;inset:10px;background:#fff;border-radius:50%}.progress-ring b{position:relative;z-index:1;font-size:1.3rem;color:var(--ink)}
.nav{display:grid;gap:8px}.navbtn{width:100%;border:0;background:#f6f9fc;border-radius:12px;padding:10px;display:grid;grid-template-columns:31px 1fr auto;gap:8px;align-items:center;text-align:left;color:#183e66}.navbtn .n{width:31px;height:31px;border-radius:10px;background:#e5eef8;display:grid;place-items:center;font-weight:900;font-size:.8rem}.navbtn .t b{font-size:.77rem;display:block}.navbtn .t span{font-size:.61rem;color:#7890a7}.navbtn .done{font-size:.62rem;font-weight:900;color:var(--green)}.navbtn.active{background:#eaf3ff;outline:1px solid #a9caee}.navbtn.complete .n{background:#188560;color:white}.side-note{border-top:1px solid var(--line);margin-top:13px;padding-top:12px;font-size:.67rem;line-height:1.5;color:#6e8197}
.main{min-width:0}.screen{padding:28px 34px;min-height:720px}.kicker{display:inline-flex;border-radius:999px;background:#eaf3ff;padding:6px 10px;color:#2467a6;font-weight:900;font-size:.66rem;letter-spacing:.04em}.screen h2{font-size:2rem;line-height:1.05;margin:12px 0 8px;color:#0b3563}.lead{max-width:760px;color:#55708c;line-height:1.55;margin-bottom:20px}.mission-head{display:flex;justify-content:space-between;align-items:start;gap:16px}.points{border:1px solid #c6dbef;background:#f3f8fe;border-radius:14px;padding:8px 12px;color:#0f4d86;font-weight:900;white-space:nowrap}.teacher{background:#f6f9fd;border:1px solid #d7e4f1;border-radius:15px;padding:11px 13px;margin:16px 0;display:flex;gap:12px;align-items:center}.teacher .txt{flex:1;font-size:.76rem;line-height:1.55}.teacher b{display:block;color:#123f6d}.btn{border:0;border-radius:12px;padding:10px 15px;font-weight:900;color:#173e66;background:#eaf1f8}.btn.primary{background:linear-gradient(135deg,#0f4e8d,#2a78bd);color:#fff;box-shadow:0 8px 18px rgba(20,87,151,.18)}.btn.good{background:#16865e;color:white}.btn.ghost{background:#fff;border:1px solid var(--line)}.btn.big{padding:12px 18px}.btnrow{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.bottom-nav{display:flex;justify-content:space-between;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.hero{display:grid;grid-template-columns:1.15fr .75fr;gap:24px;align-items:center}.hero h2{font-size:3rem;margin-top:10px}.heroimg{border-radius:22px;overflow:hidden;border:1px solid var(--line);height:350px}.heroimg img{width:100%;height:100%;object-fit:cover}.steps{display:grid;gap:9px;margin:14px 0}.step{display:flex;gap:10px;align-items:flex-start}.step .num{width:26px;height:26px;border-radius:9px;background:#e9f7ef;color:#17855e;font-weight:900;display:grid;place-items:center;font-size:.73rem}.step p{margin:2px 0;font-size:.8rem;line-height:1.45}
.identity{border:1px solid var(--line);border-radius:17px;padding:16px;margin-top:18px;max-width:650px}.identity h3{margin:0 0 4px;color:#153e68}.identity p{font-size:.74rem;color:#647b94;margin:0 0 12px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.field label{display:block;font-size:.68rem;font-weight:900;margin-bottom:6px;color:#294e73}.field input,.field textarea{width:100%;border:1px solid #c8d9e9;border-radius:11px;padding:11px 12px;background:#fff;color:#173b61;outline:none}.field input:focus,.field textarea:focus{border-color:#69a3d6;box-shadow:0 0 0 3px #e5f2fd}.field input[readonly]{background:#f5f8fb;font-weight:800}.full{grid-column:1/-1}.lookup{margin-top:10px;border-radius:12px;padding:9px 11px;font-size:.72rem;font-weight:800;background:#f5f8fb;color:#687e96;border:1px solid #dce6f0}.lookup.ok{background:var(--green-bg);color:#176548;border-color:#bae2d1}.lookup.err{background:var(--bad-bg);color:#9e3029;border-color:#efc7c4}
.qcard{border:1px solid var(--line);border-radius:18px;padding:16px;margin-top:14px;background:#fff}.qtop{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:.69rem;font-weight:900;color:#5d7590}.qtop .attempt{background:#f1f5f9;padding:6px 9px;border-radius:999px}.bar{height:7px;border-radius:999px;background:#e5edf5;overflow:hidden;margin:12px 0}.bar span{display:block;height:100%;background:linear-gradient(90deg,#2b73b7,#2b986e);width:var(--w,0%)}
.photo{overflow:hidden;border:1px solid #cbddea;border-radius:16px;background:#eef5fb;max-height:480px}.photo img{width:100%;display:block;max-height:480px;object-fit:cover}.audio-box{margin:11px 0;border:1px solid #cedfec;border-radius:14px;padding:10px 12px;display:flex;align-items:center;gap:10px;background:#f8fbfe}.audio-box audio{width:100%;height:36px}.audio-label{min-width:125px}.audio-label b{font-size:.72rem;display:block}.audio-label span{font-size:.6rem;color:#74889d}.question{font-weight:900;color:#153e69;margin:12px 0 9px}.options{display:grid;gap:9px}.opt{border:1px solid #cbdbea;border-radius:12px;padding:11px 13px;background:#fff;display:flex;gap:10px;align-items:center;text-align:left;color:#214767}.opt:hover{background:#f7fbff}.opt.selected{border-color:#3c7fbb;background:#eef6ff}.letter{width:26px;height:26px;border-radius:9px;background:#e7f0f8;display:grid;place-items:center;font-weight:900;font-size:.73rem}.feedback{margin-top:11px;border-radius:12px;padding:10px 12px;font-size:.75rem;line-height:1.45;display:none}.feedback.show{display:block}.feedback.good{background:var(--green-bg);color:#176347}.feedback.warn{background:var(--warn-bg);color:#83520c}.feedback.bad{background:var(--bad-bg);color:#973128}
.read-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mini{border:1px solid var(--line);border-radius:15px;padding:13px;background:#fff}.mini .stem{font-size:.82rem;font-weight:900;color:#183f68;margin-bottom:9px}.mini .miniopts{display:grid;gap:6px}.mini button{border:1px solid #d2e0ed;background:white;border-radius:10px;padding:8px 9px;text-align:left;color:#294b6e}.mini button.sel{background:#edf6ff;border-color:#6fa7d6}.mini-result{font-size:.67rem;margin-top:7px;min-height:18px;font-weight:800}
.speaking-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.practice-card{border:1px solid var(--line);border-radius:18px;padding:15px;background:#fff}.practice-card h3{margin:0 0 7px;color:#123e69}.practice-card p{font-size:.76rem;color:#617993;line-height:1.55}.practice-card img{width:100%;border-radius:14px;aspect-ratio:4/3;object-fit:cover}.readpassage{border:1px solid #d6e2ee;background:#f8fbfd;border-radius:14px;padding:16px;line-height:1.7;color:#17406a}.record-status{font-size:.69rem;color:#687f96;margin-top:7px}.recording{color:#a63b31;font-weight:900}.own-sentence{margin-top:12px}.own-sentence textarea{min-height:70px}
.summary{display:grid;grid-template-columns:180px 1fr;gap:20px;align-items:start}.score-ring{width:170px;height:170px;border-radius:50%;background:conic-gradient(#2a73ba var(--p,0%),#e4edf5 0);position:relative;display:grid;place-items:center}.score-ring:after{content:"";position:absolute;inset:15px;border-radius:50%;background:#fff}.score-ring .inside{position:relative;z-index:1;text-align:center}.score-ring .inside b{font-size:2.5rem;color:#0c3d70;display:block}.breakdown{display:grid;gap:8px}.breakrow{border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;justify-content:space-between}.submitbox{margin-top:16px;border:1px solid #c9dcec;border-radius:16px;background:#f7fbff;padding:14px}.submitmsg{margin-top:10px;font-size:.76rem;font-weight:800}.footer{max-width:1260px;margin:0 auto 24px;padding:0 18px;color:#7b8da1;font-size:.63rem;display:flex;justify-content:space-between;gap:12px}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:99;background:#173f68;color:#fff;border-radius:12px;padding:10px 14px;box-shadow:0 10px 30px rgba(0,0,0,.2);font-size:.78rem;max-width:90vw}
@media(max-width:900px){.layout{grid-template-columns:1fr}.sidebar{position:relative;top:0}.nav{grid-template-columns:repeat(3,1fr)}.side-note{display:none}.hero{grid-template-columns:1fr}.heroimg{height:260px}.speaking-grid,.read-grid{grid-template-columns:1fr}.summary{grid-template-columns:1fr}.score-ring{margin:auto}.screen{padding:22px}.hero h2{font-size:2.35rem}}
@media(max-width:620px){.topbar{padding:10px 12px}.brand .small{display:none}.topstats .stat:nth-child(2){display:none}.shell{padding:10px}.screen{padding:18px 14px}.nav{grid-template-columns:1fr 1fr}.formgrid{grid-template-columns:1fr}.full{grid-column:auto}.mission-head{display:block}.points{display:inline-block;margin-top:6px}.audio-box{display:block}.audio-label{margin-bottom:6px}.footer{display:block}}

/* TOEIC Practice 2 pp.35-36 */
.conversation-visual{margin:14px 0;border-radius:18px;overflow:hidden;max-height:250px;background:#eef3f8}.conversation-visual img{width:100%;height:250px;object-fit:cover;display:block}.prepbox{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;margin:12px 0;padding:12px;border:1px solid #d8e2ee;border-radius:14px;background:#f7fbff}.prepbox span{font-size:1.4rem;font-weight:900;color:#0b4f89;min-width:44px;text-align:center}.speak-checklist{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.speak-checklist span{background:#eef6ff;border:1px solid #d0e1f3;border-radius:999px;padding:6px 9px;font-size:.72rem}.email-request{border:1px solid #ccddeb;background:#f6fbff;border-radius:16px;padding:14px 16px;margin-bottom:16px;line-height:1.6}.email-request b{display:block;color:#0d4f86;margin-bottom:3px}.email-own{margin-top:16px}.email-own textarea{min-height:180px;width:100%;border:1px solid #cbd8e5;border-radius:12px;padding:12px;font:inherit;resize:vertical}.writing-check{font-size:.78rem;color:#60748a;margin-top:8px}.practice-card img[alt="Workbook speaking photograph"]{width:100%;max-height:520px;object-fit:contain;background:#f0f3f7;border-radius:14px}
@media(max-width:720px){.prepbox{grid-template-columns:1fr auto}.prepbox .btn{grid-column:1/-1}}
