.portal-tag{font-weight:700;color:var(--muted);font-size:.92rem;margin-left:.25rem}
.btn-sm{padding:.55rem 1rem;font-size:.9rem;margin-left:auto}
.portal{padding:2.5rem 1.25rem 4rem;min-height:70vh}
.login{display:grid;place-items:center;padding:2rem 0}
.login-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:2.2rem;max-width:460px;width:100%;box-shadow:0 20px 40px -28px rgba(23,64,46,.5)}
.login-card h1{font:800 2rem/1.1 var(--display);color:var(--pitch);margin:0 0 .6rem;letter-spacing:-.02em}
label{display:block;font-weight:700;margin:1rem 0 .35rem}
input[type=password],input[type=text],select,textarea{width:100%;font:400 1rem/1.4 var(--body);padding:.75rem .85rem;border:1.5px solid #b9c6bc;border-radius:var(--r-sm);background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:var(--turf)}
.login-card .btn{margin-top:1.1rem;width:100%;justify-content:center}
.err{color:var(--leather);font-weight:700;margin:.6rem 0 0}
.small{font-size:.9rem;color:var(--muted);margin-top:1.2rem}
.timerbar{position:sticky;top:68px;z-index:15;background:var(--pitch);color:var(--chalk)}
.timerbar .wrap{display:flex;justify-content:space-between;align-items:center;height:46px;font-weight:700}
.timerbar strong{font:800 1.35rem var(--display);color:var(--stitch);font-variant-numeric:tabular-nums}
.timerbar.low strong{color:#ff8a8f}
h2.ph{font:800 clamp(1.8rem,4vw,2.6rem)/1.05 var(--display);color:var(--pitch);margin:0 0 .5rem;letter-spacing:-.03em}
.sub{color:var(--muted);margin:0 0 2rem;max-width:62ch}
.tests{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem}
.test-col h3{font:800 1.35rem var(--display);color:var(--pitch);margin:0 0 .8rem;padding-bottom:.6rem;border-bottom:3px solid var(--leather)}
.tlist{list-style:none;margin:0;padding:0}
.tlist li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.9rem 0;border-bottom:1px solid var(--line)}
.tlist .meta{color:var(--muted);font-size:.9rem}
.tlist .t{font-weight:700}
.tlist button{flex:none}
.done{color:var(--turf);font-weight:700;font-size:.85rem}
@media (max-width:820px){.tests{grid-template-columns:1fr}}
.back{background:none;border:0;color:var(--turf);font:700 1rem var(--body);cursor:pointer;padding:0;margin-bottom:1rem;text-decoration:underline}
.split{display:grid;grid-template-columns:1.1fr .9fr;gap:2rem;align-items:start}
.passage{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:1.6rem;max-height:calc(100vh - 170px);overflow:auto;position:sticky;top:130px}
.passage h3{font:800 1.4rem var(--display);color:var(--pitch);margin:0 0 1rem}
.passage p{margin:0 0 1rem}
.passage b.pl{display:inline-block;min-width:1.4em;color:var(--leather)}
@media (max-width:900px){.split{grid-template-columns:1fr}.passage{position:static;max-height:none}}
.qgroup{margin-bottom:1.8rem}
.instr{background:#e7efe8;border-left:4px solid var(--turf);padding:.75rem 1rem;border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:.95rem;margin:0 0 1rem}
.q{padding:.8rem 0;border-bottom:1px dashed var(--line)}
.q .n{display:inline-grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--pitch);color:#fff;font-weight:700;font-size:.85rem;margin-right:.5rem}
.q p{margin:0 0 .5rem;display:inline}
.opts{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.6rem}
.opts label,.vopts label{margin:0;font-weight:400;display:flex;gap:.5rem;align-items:flex-start;cursor:pointer}
.opts label{background:#fff;border:1.5px solid #b9c6bc;border-radius:999px;padding:.35rem .85rem}
.vopts{display:grid;gap:.45rem;margin-top:.6rem}
.vopts label{background:#fff;border:1.5px solid #b9c6bc;border-radius:var(--r-sm);padding:.55rem .75rem}
.opts input,.vopts input{accent-color:var(--leather);margin-top:.25rem}
.q input[type=text]{max-width:260px;margin-top:.5rem}
.inline-sel{display:inline-block;width:auto;padding:.25rem .4rem;margin:0 .2rem;font-size:.95rem}
.ptext{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:1.4rem;line-height:2.1}
.correct{border-color:#1F8F4E!important;background:#e3f4e9!important}
.wrong{border-color:var(--leather)!important;background:#fbe6e7!important}
.fb{display:block;font-size:.88rem;font-weight:700;margin-top:.35rem}
.fb.ok{color:#1F8F4E}.fb.no{color:var(--leather)}
.actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.6rem}
.result{background:var(--pitch);color:var(--chalk);border-radius:var(--r-lg);padding:1.6rem;margin:1.5rem 0}
.result h3{font:800 1.4rem var(--display);margin:0 0 .4rem}
.result .big{font:800 3rem/1 var(--display);color:var(--stitch)}
.result p{margin:.4rem 0 0}
.reo{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.reo li{display:flex;gap:.75rem;align-items:center;background:#fff;border:1.5px solid #b9c6bc;border-radius:var(--r-sm);padding:.7rem .8rem}
.reo li span{flex:1}
.reo button{background:var(--chalk);border:1px solid var(--line);border-radius:6px;width:2.2rem;height:2.2rem;cursor:pointer;font-weight:700}
.chart{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:1rem;margin:1rem 0}
textarea{min-height:320px;line-height:1.6}
.wc{display:flex;justify-content:space-between;font-size:.92rem;color:var(--muted);margin-top:.4rem}
.wc strong{color:var(--ink)}
.checklist{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:1.2rem 1.4rem;margin-top:1rem}
.checklist h4{margin:0 0 .5rem;font:800 1.05rem var(--display);color:var(--pitch)}
.checklist ul{margin:0;padding-left:1.2rem}
.cue{background:#fff;border:2px solid var(--pitch);border-radius:var(--r-md);padding:1.4rem;max-width:560px}
.cue h4{font:800 1.25rem var(--display);margin:0 0 .5rem;color:var(--pitch)}
.qlist{counter-reset:q;list-style:none;padding:0}
.qlist li{counter-increment:q;padding:.6rem 0 .6rem 2.4rem;position:relative;border-bottom:1px dashed var(--line)}
.qlist li::before{content:counter(q);position:absolute;left:0;top:.55rem;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--chalk);border:1px solid var(--line);display:grid;place-items:center;font-weight:700;font-size:.85rem}
.pfoot{border-top:1px solid var(--line);padding:1.5rem 0;color:var(--muted);font-size:.85rem}
.bank{display:flex;flex-wrap:wrap;gap:.4rem;margin:.8rem 0 0}
.bank span{background:var(--chalk);border:1px dashed var(--turf);border-radius:999px;padding:.25rem .7rem;font-weight:700;font-size:.9rem}
@media print{.top,.timerbar,.actions,.pfoot{display:none}}
[hidden]{display:none!important}
.pfoot{background:var(--chalk)!important;color:var(--muted)!important}
@media (max-width:600px){.portal-tag{display:none}.timerbar{top:68px}}
h4.cat{font:700 .8rem var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:1.4rem 0 .2rem}
.headings{background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);padding:.8rem 1rem;margin:0 0 .8rem;font-size:.95rem;display:grid;gap:.25rem}
.msel{width:auto;min-width:9rem;margin-top:.5rem;display:block}
.dtable{width:100%;border-collapse:collapse;font-size:1rem}
.dtable th,.dtable td{border:1px solid var(--line);padding:.55rem .8rem;text-align:left}
.dtable thead th{background:var(--pitch);color:#fff}
.dtable td{text-align:right;font-variant-numeric:tabular-nums}
.proc{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;counter-reset:none}
.proc li{position:relative;background:#e7efe8;border:1.5px solid var(--turf);border-radius:var(--r-sm);padding:.7rem .75rem .7rem 2.6rem;font-size:.92rem;min-height:4.2rem;display:flex;align-items:center}
.proc .pn{position:absolute;left:.6rem;top:50%;transform:translateY(-50%);width:1.6rem;height:1.6rem;border-radius:50%;background:var(--pitch);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.8rem}
.proc li:not(:last-child)::after{content:"\2192";position:absolute;right:-.55rem;top:50%;transform:translateY(-50%);color:var(--leather);font-weight:700;z-index:1}
@media (max-width:700px){.proc{grid-template-columns:1fr 1fr}.proc li::after{display:none}}
#timerlabel{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:72%}
/* TOEFL iBT */
.tests.three{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.ctwtext{line-height:2.3}
.ctw{display:inline-block;padding:.1rem .3rem;margin:0 .05rem;font:inherit;border:0;border-bottom:2px solid var(--turf);background:#fff;border-radius:4px 4px 0 0;min-width:2.2em}
.ctw.correct{border-color:#2F6B4A;background:#e6f2ea}
.ctw.wrong{border-color:var(--leather);background:#fbe9ea}
.daily{background:#fff;border:1.5px solid var(--line);border-radius:var(--r-md);padding:1rem 1.2rem}
.daily h4{font:800 1.05rem var(--display);color:var(--pitch);margin:0 0 .5rem}
.board{display:grid;gap:.7rem;margin:1rem 0 1.4rem}
.board .post{background:#fff;border:1.5px solid var(--line);border-radius:var(--r-md);padding:.9rem 1.1rem}
.board .post.prof{border-color:var(--pitch);border-width:2px}
.board .post b{color:var(--pitch)}
.board .post p{margin:.35rem 0 0}
.bitem .said{font-weight:700}
.built{min-height:2.9rem;display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;background:#fff;border:1.5px dashed #b9c6bc;border-radius:var(--r-sm);padding:.45rem .6rem;margin:.5rem 0}
.built .ph-text{color:var(--muted);font-size:.9rem}
.chunks{display:flex;flex-wrap:wrap;gap:.4rem}
.chip{font:700 .95rem var(--body);background:var(--chalk);border:1.5px solid var(--turf);color:var(--ink);border-radius:999px;padding:.35rem .8rem;cursor:pointer}
.chip.on{background:var(--pitch);border-color:var(--pitch);color:#fff}
.chip:disabled{cursor:default;opacity:.85}
/* radios/checkboxes must not inherit the full-width text-input style */
input[type=radio],input[type=checkbox]{width:auto;padding:0;flex:none}
#tf .passage{position:static;max-height:none;margin-bottom:1rem}
/* Listening */
.player{display:flex;align-items:center;gap:.9rem;background:#fff;border:1.5px solid var(--line);border-radius:var(--r-md);padding:.7rem .9rem;margin:.6rem 0 1rem}
.player.on{border-color:var(--turf)}
.pbtn{flex:none;width:2.9rem;height:2.9rem;border-radius:50%;border:0;background:var(--leather);color:#fff;font-size:1.05rem;cursor:pointer;display:grid;place-items:center}
.pbtn:disabled{background:var(--pitch);cursor:default}
.player.replay .pbtn{background:var(--turf);cursor:pointer}
.pmeta{flex:1;min-width:0}
.plabel{font-weight:700;font-size:.92rem;margin-bottom:.35rem}
.pbar{height:6px;background:var(--chalk);border-radius:999px;overflow:hidden}
.pbar span{display:block;height:100%;width:0;background:var(--turf);transition:width .25s linear}
.ptime{flex:none;font-size:.85rem;color:var(--muted);font-variant-numeric:tabular-nums}
.stickyplayer{position:sticky;top:120px;z-index:5;background:var(--chalk);padding:.2rem 0}
.formhead{font:800 1.1rem var(--display);color:var(--pitch);margin:.2rem 0 .8rem}
.wfd{margin-bottom:1.2rem}
.wfd input[type=text]{max-width:none}
.q .player{margin:.6rem 0}
.tscript{background:#fff;border:1.5px solid var(--line);border-radius:var(--r-md);padding:.8rem 1.1rem;margin:1.2rem 0}
.tscript summary{font-weight:700;cursor:pointer;color:var(--pitch)}
.tblock{border-top:1px dashed var(--line);margin-top:.8rem;padding-top:.6rem}
.tblock p{margin:.3rem 0}

/* AI feedback */
.aifb{margin-top:1.5rem;background:#fff;border:1px solid var(--line);border-left:5px solid var(--turf);border-radius:var(--r-md);padding:1.4rem 1.5rem}
.aifb .sub{margin:0}
.aifb-head{display:flex;gap:1.25rem;justify-content:space-between;align-items:flex-start}
.aifb-head h3{font:800 1.35rem/1.1 var(--display);color:var(--pitch);margin:0 0 .4rem}
.aifb-head p{margin:0}
.aifb-score{flex:none;text-align:center;background:var(--pitch);color:var(--chalk);border-radius:var(--r-md);padding:.6rem 1rem;min-width:88px}
.aifb-score span{display:block;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.8}
.aifb-score strong{font:800 1.9rem/1.1 var(--display);color:var(--stitch)}
.aifb-crit{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;margin:1.2rem 0}
.aifb-crit>div{background:var(--chalk);border-radius:var(--r-sm);padding:.8rem .9rem}
.aifb-crit b{display:block;color:var(--pitch)}
.aifb-crit p{margin:.35rem 0 0;font-size:.95rem}
.aifb-pill{display:inline-block;margin-top:.3rem;background:var(--turf);color:#fff;font-weight:700;font-size:.85rem;border-radius:999px;padding:.1rem .6rem}
.aifb h4{color:var(--pitch);margin:1.1rem 0 .4rem}
.aifb ul,.aifb ol{margin:0;padding-left:1.25rem}
.aifb-fix li{margin-bottom:.6rem}
.aifb-fix del{color:var(--leather)}
.aifb-fix ins{color:var(--turf);text-decoration:none;font-weight:700}
.aifb-fix span{display:block;font-size:.9rem;color:var(--muted)}
@media (max-width:560px){.aifb-head{flex-direction:column-reverse}.aifb{padding:1.1rem}}

/* AI speaking coach */
.coach-step{margin-top:1.6rem;padding-top:1.2rem;border-top:1px solid var(--line)}
.coach-step h3{display:flex;align-items:center;gap:.6rem;margin:0 0 .3rem;color:var(--pitch)}
.coach-step h3 span{display:grid;place-items:center;width:1.8rem;height:1.8rem;border-radius:50%;background:var(--leather);color:#fff;font-size:.95rem}
.coach-step .actions{align-items:center}
textarea.short{min-height:7rem}
#cplay{display:block;width:100%;max-width:420px;margin:.8rem 0 0}
#cplay[hidden]{display:none}
.aifb-notes{margin-top:1.1rem;border-radius:var(--r-sm);padding:.8rem 1rem;background:#eef5ef;border-left:4px solid var(--turf)}
.aifb-notes.partial{background:#fbf5e4;border-left-color:var(--stitch)}
.aifb-notes.missing{background:#fbecec;border-left-color:var(--leather)}
.aifb-notes p{margin:.3rem 0 0}
.aifb-notes ul{margin:.4rem 0 0}
.aifb-outline{background:var(--chalk);border-radius:var(--r-sm);padding:.8rem 1rem .8rem 2rem!important;font-weight:700;color:var(--pitch)}

/* Free AI allowance */
.quota{margin-top:.6rem;font-weight:700;color:var(--turf)}
.appcta{border-left-color:var(--leather);background:#fff}
.appcta h3{font:800 1.35rem/1.15 var(--display);color:var(--pitch);margin:0 0 .5rem}
.appcta p{margin:0 0 .6rem}
.btn-store{background:#111;color:#fff;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.6rem 1.2rem;border-radius:12px;font:700 1.1rem/1.1 var(--body)}
.btn-store span{font-size:.68rem;font-weight:400;letter-spacing:.04em;text-transform:uppercase;opacity:.85}
.btn-store:hover{background:#333}

/* Student accounts */
.authtabs{display:flex;gap:.25rem;background:var(--chalk);border-radius:999px;padding:.25rem;margin:1.2rem 0 .4rem}
.authtabs button{flex:1;font:700 .95rem var(--body);color:var(--pitch);background:none;border:0;padding:.6rem .8rem;border-radius:999px;cursor:pointer}
.authtabs button[aria-selected="true"]{background:var(--pitch);color:#fff}
.authpane p{margin:.8rem 0 0}
.opt{font-weight:400;color:var(--muted)}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:var(--turf);text-decoration:underline;cursor:pointer}
.note-ok{background:#eef5ef;border-left:4px solid var(--turf);border-radius:var(--r-sm);padding:.7rem .9rem;margin:.8rem 0 0}
input[type=email],input[type=tel]{width:100%;font:400 1rem/1.4 var(--body);padding:.75rem .85rem;border:1.5px solid #b9c6bc;border-radius:var(--r-sm);background:#fff;color:var(--ink)}
.whoami{margin-left:auto;font-size:.88rem;color:var(--muted);max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.whoami+.btn-sm{margin-left:.6rem}
@media (max-width:560px){.whoami{display:none}}

/* Full-length tests */
.lockcard{background:#fff;border:1px solid var(--line);border-left:5px solid var(--stitch);border-radius:var(--r-md);padding:1.4rem 1.5rem;margin-top:1rem}
.lockcard h3{margin:0 0 .6rem;color:var(--pitch)}
.lockl{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.5rem}
.lockl li{display:flex;gap:.6rem;align-items:center;background:var(--chalk);border-radius:var(--r-sm);padding:.6rem .8rem}
.lockl li span{display:grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:50%;background:#fff;border:2px solid var(--line);font-weight:700;color:var(--muted)}
.lockl li.ok span{background:var(--turf);border-color:var(--turf);color:#fff}
.lockl li b{min-width:6rem;color:var(--pitch)}
.ftstart{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;background:var(--pitch);color:var(--chalk);border-radius:var(--r-md);padding:1.2rem 1.4rem;margin:1.2rem 0}
.ftstart h3{margin:0 0 .3rem;color:#fff}
.ftstart p{margin:0;max-width:560px}
.ftpart{margin-top:2rem;padding-top:1rem;border-top:2px solid var(--line)}
.ftsec{font:800 1.15rem/1.3 var(--display);color:var(--pitch);margin:0 0 .8rem}
.ftres{margin-top:1.6rem}
.ftres .dtable{max-width:360px}
.ftres tr.tot th,.ftres tr.tot td{font-weight:800;color:var(--pitch);font-size:1.1rem}
.result.ftres{background:#fff;color:var(--ink);border:1px solid var(--line)}
.result.ftres h3{color:var(--pitch)}
.result.ftres .dtable th,.result.ftres .dtable td{color:var(--ink);border-color:var(--line)}
.result.ftres tr.tot th,.result.ftres tr.tot td{color:var(--pitch);background:var(--chalk)}
.result.ftres .small{color:var(--muted)}
.lockcard.paid{border-left-color:var(--leather)}
/* Account page and Wordwicket Premium (app) */
#acct{margin-left:auto}
.whoami+#acct{margin-left:.6rem}
#acct+.btn-sm{margin-left:.5rem}
@media (max-width:560px){.portal-tag{display:none}#logout{display:none}.whoami+#acct{margin-left:auto}}
.acct{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg,14px);padding:1.2rem 1.3rem;margin:0 0 1.2rem}
.acct p{margin:0 0 .8rem}
.acct.danger{border-color:#e7c3c5}
.acct.danger summary{cursor:pointer;font-weight:700;color:var(--red)}
.acct.danger form{margin-top:.6rem}
.acct .err{color:var(--red)}
.premium .plist{margin:.4rem 0 1rem;padding-left:1.2rem}
.premium .plist li{margin:.2rem 0}
.premium #pkgs{flex-wrap:wrap}
.premium #pkgs .btn{white-space:normal}
.premium .legal{margin-top:.8rem}
.premium .legal a{color:inherit}
.pfoot a{color:var(--turf,#2F6B4A);text-decoration:underline}
.freemonth{margin:0 0 1.4rem}
