/* Study Lab Academic · styles */
:root{--dark:#1e0a33;--ink:#251c35;--muted:#6f6582;--line:#e7e0ef;--bg:#f8f6fc;--white:#fff;--ok:#0d8a62;--ok-bg:#e8f8f1;--bad:#c2335a;--bad-bg:#fff0f4;--warn:#9a6400;--warn-bg:#fff6df;
--blue:#1f63c6;--blue-soft:#e6effc;--green:#12865f;--green-soft:#e2f5ec;--orange:#e06a10;--orange-soft:#fdeedd;--purple:#7330bf;--purple-soft:#f1e6fb;
--acc:#7330bf;--acc2:#b36ae8;--acc-soft:#f1e6fb;--acc-ink:#56208f;--hero-bg:#e1cd50;--balloon:#cb9c3e;--hero-ink:#2b2106;--hero-sub:#4c3d0e;--eyebrow:#8a4f00;--chip:#ffffff4d;--chip-line:#00000020;
--shadow:0 14px 38px #3f175016;--r:18px}
*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{overflow-x:clip}
body{margin:0;background:radial-gradient(circle at 95% 0%,#f1e5ff 0,transparent 32%),var(--bg);color:var(--ink);font:16px/1.6 'DM Sans',Arial,sans-serif}
h1,h2,h3,h4,.brand,.num{font-family:Outfit,'DM Sans',Arial,sans-serif}
button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}
:focus-visible{outline:3px solid #ffcf54;outline-offset:2px}
a{color:var(--acc-ink)}
/* ---------- skins (hero) ---------- */
body[data-skin=home],body[data-skin=scores]{--hero-bg:#e1cd50;--balloon:#cb9c3e;--hero-ink:#2b2106;--hero-sub:#4c3d0e;--eyebrow:#8a4f00;--chip:#ffffff4d;--chip-line:#00000020}
body[data-skin=reading]{--hero-bg:#0f8a8a;--balloon:#54c2bf}
body[data-skin=listening]{--hero-bg:#c0367c;--balloon:#ea86b7}
body[data-skin=writing]{--hero-bg:#3f4aa8;--balloon:#8790e0}
body[data-skin=speaking]{--hero-bg:#d9503e;--balloon:#f39a8c}
body[data-skin=rw]{--hero-bg:#0f7a9a;--balloon:#5cb9d6}
body[data-skin=math]{--hero-bg:#24527a;--balloon:#6c97c2}
body[data-skin=interview]{--hero-bg:#7a2e8e;--balloon:#b77ccb}
body[data-skin=admin],body[data-skin=me]{--hero-bg:#3a1a5e;--balloon:#7b55a6}
body:not([data-skin=home]):not([data-skin=scores]){--hero-ink:#fff;--hero-sub:#f2ecff;--eyebrow:#ffe27a;--chip:#ffffff22;--chip-line:#ffffff45}
/* ---------- tab accents: Resumo azul · Vocabulário verde · Prática laranja · Teste/Resultados/Boletim roxo ---------- */
body[data-tab=summary],.tone-blue{--acc:#1f63c6;--acc2:#58a0f0;--acc-soft:#e6effc;--acc-ink:#164b96}
body[data-tab=vocab],.tone-green{--acc:#12865f;--acc2:#3cc08f;--acc-soft:#e2f5ec;--acc-ink:#0c6447}
body[data-tab=practice],.tone-orange{--acc:#e06a10;--acc2:#f8a457;--acc-soft:#fdeedd;--acc-ink:#9e4504}
body[data-tab=test],body[data-tab=results],body[data-tab=report],.tone-purple{--acc:#7330bf;--acc2:#b36ae8;--acc-soft:#f1e6fb;--acc-ink:#56208f}
/* ---------- layout ---------- */
.layout{display:grid;grid-template-columns:280px minmax(0,1fr);max-width:1560px;min-height:100vh;margin:auto}
.side{background:linear-gradient(165deg,#1d082e,#3d1361 72%,#2a0f50);color:#fff;position:sticky;top:0;height:100vh;overflow-y:auto;padding:24px 16px;display:flex;flex-direction:column;gap:16px;z-index:67}
.brand{display:flex;align-items:center;gap:11px;font-size:19px;font-weight:900;line-height:1.1;cursor:pointer}
.brand img{width:46px;height:54px;object-fit:cover;border-radius:12px;filter:brightness(.7) saturate(.7);transition:.35s}.brand:hover img{filter:brightness(1.25) saturate(1.4) drop-shadow(0 0 7px #ffe680)}
.brand small{display:block;font:800 10px 'DM Sans';letter-spacing:2px;color:#ffd84d;margin-top:3px}
.navgroup{display:grid;gap:3px}.navgroup>span{font:800 10px 'DM Sans';letter-spacing:1.6px;color:#b89fd0;text-transform:uppercase;padding:8px 12px 2px}
.nav button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;border-radius:11px;padding:9px 12px;color:#dccbeb;background:transparent;font-weight:700;font-size:14.5px;transition:.18s}
.nav button:hover{background:#ffffff14;transform:translateX(3px)}.nav button.active{background:#ffffff22;color:#fff;box-shadow:inset 4px 0 var(--nc,#ffd84d)}
.nav .ic{width:22px;text-align:center;color:var(--nc,#fff);font-size:16px}
.usercard{margin-top:auto;background:#ffffff12;border:1px solid #ffffff22;border-radius:15px;padding:13px;font-size:12.5px;color:#e5d6f2}
.usercard b{display:block;color:#fff;font-size:14px}.usercard .row{display:flex;gap:6px;margin-top:9px}.usercard button{flex:1;border:1px solid #ffffff35;background:#ffffff14;color:#fff;border-radius:9px;padding:6px;font-size:12px;font-weight:700}
.main{min-width:0;padding:24px 32px 70px}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#7b668e;font-weight:800;font-size:11.5px;letter-spacing:1px;margin-bottom:16px;text-transform:uppercase}
.pill{background:var(--acc-soft);color:var(--acc-ink);padding:6px 12px;border-radius:99px;letter-spacing:0;font-size:12px;text-transform:none}
.mobilehead{display:none}.drawer-close{display:none}.scrim{display:none}
/* ---------- hero + balloons ---------- */
.hero{position:relative;overflow:hidden;border-radius:24px;background:var(--hero-bg);color:var(--hero-ink);padding:32px 36px;min-height:220px;box-shadow:0 18px 44px #2a124018;transition:background-color .45s}
.hero>*{position:relative;z-index:1}.hero>.balloons{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.balloons i{position:absolute;display:block;width:var(--bs,49px);height:var(--bs,49px);border:1.3px solid var(--balloon);border-radius:50% 50% 50% 0;transform:perspective(380px) rotateY(0)}
.balloons i.b{border-radius:0 50% 50% 50%}
.balloons i.spin{animation:bSpin var(--d,1.8s) cubic-bezier(.45,.05,.3,1) both}.balloons i.spin.rev{animation-name:bSpinRev}.balloons i.spin.dbl{animation-name:bSpinDbl}
@keyframes bSpin{from{transform:perspective(380px) rotateY(0)}to{transform:perspective(380px) rotateY(360deg)}}
@keyframes bSpinRev{from{transform:perspective(380px) rotateY(0)}to{transform:perspective(380px) rotateY(-360deg)}}
@keyframes bSpinDbl{from{transform:perspective(380px) rotateY(0)}to{transform:perspective(380px) rotateY(720deg)}}
.eyebrow{text-transform:uppercase;color:var(--eyebrow);font-size:12px;letter-spacing:2px;font-weight:900}
.hero h1{font-size:clamp(28px,3.8vw,46px);line-height:1.1;margin:8px 0;max-width:820px;letter-spacing:-1px}
.hero p{max-width:760px;color:var(--hero-sub);margin:0}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.chips span{background:var(--chip);border:1px solid var(--chip-line);padding:5px 11px;border-radius:99px;font-size:12px;font-weight:800}
/* ---------- sub tabs + level ---------- */
.subbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin:18px 0 6px}
.subtabs{display:flex;gap:7px;flex-wrap:wrap}
.subtabs button{border:1.5px solid var(--c);color:var(--c);background:#fff;border-radius:12px;padding:8px 14px;font-weight:800;font-size:14px;transition:.18s}
.subtabs button:hover{background:var(--cs)}.subtabs button.active{background:var(--c);color:#fff;box-shadow:0 6px 16px color-mix(in srgb,var(--c) 30%,transparent)}
.subtabs [data-tab=summary]{--c:var(--blue);--cs:var(--blue-soft)}.subtabs [data-tab=vocab]{--c:var(--green);--cs:var(--green-soft)}.subtabs [data-tab=practice]{--c:var(--orange);--cs:var(--orange-soft)}.subtabs [data-tab=test],.subtabs [data-tab=results],.subtabs [data-tab=report]{--c:var(--purple);--cs:var(--purple-soft)}
.levels{display:flex;background:#fff;border:1px solid var(--line);border-radius:12px;padding:3px;gap:2px}.levels button{border:0;background:transparent;border-radius:9px;padding:6px 13px;font-weight:800;color:var(--muted)}.levels button.active{background:var(--ink);color:#fff}
/* ---------- generic ---------- */
.content{animation:up .35s both}@keyframes up{from{opacity:.3;transform:translateY(12px)}to{opacity:1;transform:none}}
.st{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:24px 0 10px;flex-wrap:wrap}.st h2{font-size:25px;letter-spacing:-.5px;margin:0}
.muted{color:var(--muted)}.small{font-size:13px}
.card,.tile,.stat{border:1px solid var(--line);background:#fff;border-radius:var(--r);padding:22px;box-shadow:0 6px 22px #3b195008}
.card{margin:14px 0}.card h3{font-size:20px;margin:0 0 8px}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}
.tile{position:relative;overflow:hidden;transition:.22s;display:flex;flex-direction:column}.tile:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.tile h3{margin:9px 0 6px;font-size:19px}.tile p{color:var(--muted);margin:2px 0 12px;font-size:14.5px}.tile .btn{margin-top:auto;align-self:flex-start}
.tile[class*=tone-]{border-top:5px solid var(--acc)}
.badge{display:inline-block;border-radius:99px;padding:3px 10px;font-size:11.5px;background:var(--acc-soft);color:var(--acc-ink);font-weight:900;letter-spacing:.3px}
.badge.lv{background:#25183a;color:#fff}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}
.stat .num{font-size:32px;color:var(--acc);font-weight:900;line-height:1.15}.stat small{color:var(--muted)}
.btn{border:0;border-radius:12px;background:var(--acc);color:#fff;font-weight:800;padding:10px 17px;transition:.18s;display:inline-flex;gap:7px;align-items:center;justify-content:center;text-decoration:none;font-size:15px}
.btn:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.06)}.btn.alt{background:var(--acc-soft);color:var(--acc-ink)}.btn.ghost{background:#fff;color:var(--acc-ink);border:1px solid #dcd0ea}.btn.dark{background:#25183a}.btn.red{background:var(--bad)}.btn.sm{padding:6px 11px;font-size:13px;border-radius:9px}
.actions{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin-top:14px}
.field{width:100%;padding:11px 13px;border:1.5px solid #d9cce8;border-radius:12px;background:#fff}.field:focus{border-color:var(--acc);outline:none;box-shadow:0 0 0 4px color-mix(in srgb,var(--acc) 15%,transparent)}
.label{display:block;font-weight:800;font-size:13px;margin:10px 0 5px}
.helper{padding:12px 15px;background:var(--acc-soft);border-left:4px solid var(--acc);border-radius:11px;color:var(--acc-ink)}
.note{background:var(--warn-bg);border:1px solid #ffe3a3;border-radius:12px;padding:12px 15px;color:#6f4b0c}
.okbox{background:var(--ok-bg);border:1px solid #a9e2cb;border-radius:12px;padding:12px 15px;color:#0d5f45}
.badbox{background:var(--bad-bg);border:1px solid #f3bccb;border-radius:12px;padding:12px 15px;color:#8f2448}
table.t{border-collapse:collapse;width:100%;font-size:14px;margin:10px 0}table.t th,table.t td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}table.t th{background:var(--acc-soft);color:var(--acc-ink);font-size:13px}
.scroll{overflow-x:auto}
ul.tight{margin:6px 0;padding-left:20px}ul.tight li{margin:3px 0}
.progress{height:9px;background:#eee8f4;border-radius:99px;overflow:hidden;margin:9px 0}.progress>div{height:100%;background:linear-gradient(90deg,var(--acc),var(--acc2));transition:width .4s}
.empty{padding:26px;text-align:center;color:var(--muted);border:1.5px dashed #ddd2ea;border-radius:16px;background:#fff}
.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);background:#25133a;color:#fff;border-radius:12px;padding:11px 17px;box-shadow:var(--shadow);z-index:120;opacity:0;transition:.2s;pointer-events:none;max-width:min(560px,92vw);text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}
.footer{text-align:center;margin:40px 0 10px;color:#9a8ba6;font-size:12px}
.print-head{display:none}
/* ---------- vocab cards ---------- */
.vcard{border:1px solid var(--line);background:#fff;border-radius:14px;padding:13px 15px;cursor:pointer;transition:.18s;position:relative}.vcard:hover{border-color:var(--acc)}
.vcard b{font-size:17px;color:var(--acc-ink)}.vcard .def{font-size:13.5px;color:var(--muted)}.vcard .back{display:none;margin-top:6px;font-size:14px}.vcard.open .back{display:block}.vcard .say{position:absolute;right:10px;top:10px;border:0;background:var(--acc-soft);color:var(--acc-ink);border-radius:8px;width:30px;height:30px}
/* ---------- login ---------- */
.auth{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.auth .hero{border-radius:0;min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:48px 7vw}
.auth .hero h1{font-size:clamp(34px,4.6vw,60px)}
.auth-box{display:flex;align-items:center;justify-content:center;padding:32px 20px}
.auth-card{width:min(440px,100%);background:#fff;border:1px solid var(--line);border-radius:24px;padding:30px;box-shadow:var(--shadow)}
.auth-card h2{margin:0 0 4px;font-size:26px}
.seg{display:flex;background:#f3eef9;border-radius:12px;padding:4px;margin:16px 0}.seg button{flex:1;border:0;background:transparent;padding:8px;border-radius:9px;font-weight:800;color:var(--muted)}.seg button.active{background:#fff;color:var(--ink);box-shadow:0 2px 8px #0000000f}
.err{color:var(--bad);font-size:14px;margin-top:8px;min-height:20px}
/* ---------- exam player (estilo IELTS computer-delivered) ---------- */
body.playing .side,body.playing .mobilehead,body.playing .layout>.main>.top,body.playing .hero,body.playing .subbar,body.playing .footer{display:none!important}
body.playing .layout{display:block;max-width:none}body.playing .main{padding:0}
.xhead{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:14px;background:#fff;border-bottom:1px solid #dcd6e4;padding:10px 20px;box-shadow:0 2px 10px #0000000a}
.xlogo{font:900 18px Outfit;color:#c8102e;letter-spacing:.5px}.xlogo.toefl{color:#1d4f91}.xlogo.sat{color:#0a6e8a}.xlogo.academic{color:#7330bf}
.xmeta{font-size:13px;color:#4a4257;line-height:1.25}.xmeta b{display:block;font-size:14px;color:#1d1726}
.xtimer{margin-left:auto;display:flex;align-items:center;gap:8px;font:800 16px Outfit;background:#f2f0f6;border-radius:10px;padding:7px 13px;color:#1d1726;min-width:118px;justify-content:center}.xtimer.low{background:#ffe7ea;color:#b1132e;animation:blink 1s infinite}@keyframes blink{50%{opacity:.6}}
.xhead .btn{white-space:nowrap}
.xbody{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);height:calc(100vh - 121px);min-height:420px}
.xbody.single{grid-template-columns:minmax(0,1fr)}
.xpane{overflow-y:auto;padding:22px 28px}.xpane.left{border-right:4px solid #e9e4f0;background:#fdfcfe}
.xpane h2{font-size:21px;margin:0 0 10px}.xins{background:#f3f1f6;border-left:4px solid #6c6577;padding:10px 13px;border-radius:6px;font-size:14.5px;margin:6px 0 14px}
.passage p{margin:0 0 13px;line-height:1.72;font-size:15.5px}.passage .pl{font:900 15px Outfit;margin-right:6px;color:#5c2a91}
.passage mark{background:#ffe86b;padding:0 1px}
.hl-btn{position:fixed;z-index:90;background:#25183a;color:#fff;border:0;border-radius:8px;padding:6px 10px;font-size:13px;font-weight:700;display:none}
.xq{border:1px solid #e6e0ee;border-radius:12px;padding:14px 16px;margin:10px 0;background:#fff;scroll-margin-top:90px;transition:border-color .2s}
.xq.cur{border-color:#7a42c0;box-shadow:0 0 0 3px #7a42c01a}.xq.good{background:#f3fcf8;border-color:#8fd6bb}.xq.wrong{background:#fff6f9;border-color:#efb0c3}
.xq .qn{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border:2px solid #25183a;border-radius:6px;font:800 14px Outfit;margin-right:8px;padding:0 4px}
.xq .qt{font-weight:600}.xq .flag{float:right;border:0;background:transparent;font-size:16px;color:#bbb}.xq .flag.on{color:#e06a10}
.opt{display:flex;gap:10px;align-items:flex-start;padding:7px 9px;border-radius:9px;margin:4px 0;cursor:pointer;border:1px solid transparent}.opt:hover{background:#f6f2fb}.opt input{margin-top:5px;accent-color:#5c2a91}
.opt.correct{background:#e4f7ef;border-color:#9edac3}.opt.picked-wrong{background:#ffeef3;border-color:#f2b6c6}
.tfng{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}.tfng label{border:1.5px solid #d4cbe0;border-radius:9px;padding:6px 12px;font-weight:800;font-size:13px;cursor:pointer}.tfng input{display:none}.tfng label:has(input:checked){background:#25183a;color:#fff;border-color:#25183a}
.gapin{border:0;border-bottom:2px solid #5c2a91;background:#f7f3fc;padding:4px 8px;min-width:150px;border-radius:5px 5px 0 0;font-weight:700}
.selq{padding:7px 10px;border:1.5px solid #d4cbe0;border-radius:9px;max-width:100%;background:#fff}
.ctw{line-height:2.3;font-size:16px}.ctw input{width:calc(var(--n)*0.72em + 14px);border:0;border-bottom:2px solid #1d4f91;background:#eef3fb;text-align:left;padding:1px 3px;font-weight:700;font-family:'Courier New',monospace;letter-spacing:.06em;border-radius:3px 3px 0 0}
.ctw input.good{background:#dcf5ea;border-color:var(--ok)}.ctw input.bad{background:#ffe5ec;border-color:var(--bad)}
.order .ctx{font-style:italic;color:#4a4257;margin:4px 0 8px}.chunks{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chunks button{border:1.5px solid #c9bde0;background:#fff;border-radius:8px;padding:5px 10px;font-weight:700}.chunks button.used{opacity:.25}
.built{min-height:44px;border:1.5px dashed #b9aad3;border-radius:10px;padding:7px;display:flex;flex-wrap:wrap;gap:6px;background:#faf8fd}.built button{border:0;background:#25183a;color:#fff;border-radius:8px;padding:5px 10px;font-weight:700}
.fb{margin-top:10px;border-radius:10px;padding:10px 12px;font-size:14px}.fb.good{background:var(--ok-bg);color:#0c5e44}.fb.bad{background:var(--bad-bg);color:#8f2448}
.audio{background:linear-gradient(120deg,#25183a,#432068);color:#fff;border-radius:16px;padding:16px 18px;margin-bottom:14px}
.audio .row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.audio .btn{background:#fff;color:#25183a}.audio .btn.alt{background:#ffffff22;color:#fff}
.audio .bar{height:6px;background:#ffffff30;border-radius:9px;overflow:hidden;margin:12px 0 4px}.audio .bar>div{height:100%;background:#ffd84d;width:0;transition:width .3s}
.audio select{background:#ffffff1c;color:#fff;border:1px solid #ffffff40;border-radius:8px;padding:5px}.audio select option{color:#000}
.transcript{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;font-size:14.5px;max-height:320px;overflow:auto}.transcript p{margin:4px 0}.transcript b{color:#5c2a91}
.playline{background:#fff3a6}
.xfoot{position:sticky;bottom:0;z-index:60;background:#fff;border-top:1px solid #dcd6e4;display:flex;align-items:center;gap:10px;padding:8px 16px;box-shadow:0 -2px 10px #0000000a}
.qnav{display:flex;flex-wrap:wrap;gap:4px;flex:1;overflow:auto;max-height:76px}.qnav button{min-width:30px;height:30px;border:1px solid #b8aec6;background:#fff;border-radius:5px;font:700 13px Outfit;position:relative}
.qnav button.done{background:#25183a;color:#fff;border-color:#25183a}.qnav button.cur{outline:2px solid #e06a10;outline-offset:1px}.qnav button.fl:after{content:'';position:absolute;right:-3px;top:-3px;width:8px;height:8px;background:#e06a10;border-radius:50%}
.qnav button.g{background:#13996b;border-color:#13996b;color:#fff}.qnav button.w{background:#c2335a;border-color:#c2335a;color:#fff}
.qnav .sep{width:10px}
/* ---------- writing ---------- */
.editor{width:100%;min-height:52vh;border:1.5px solid #d3c9df;border-radius:12px;padding:14px;font:16px/1.65 'DM Sans',Arial;resize:vertical;background:#fff}
.wc{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);margin-top:6px}.wc b.ok{color:var(--ok)}.wc b.low{color:var(--bad)}
.chart{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin:10px 0}.chart svg{width:100%;height:auto;display:block}
.post{display:flex;gap:10px;margin:10px 0}.post .av{flex:none;width:38px;height:38px;border-radius:50%;background:#e4d7f3;display:flex;align-items:center;justify-content:center;font-weight:900;color:#5c2a91}.post .bub{background:#f5f2f9;border-radius:12px;padding:9px 12px;font-size:14.5px}
.model{white-space:pre-wrap;background:#fbfaf6;border:1px solid #ece4c9;border-radius:12px;padding:14px;font-size:15px;line-height:1.65}
.checklist label{display:flex;gap:8px;align-items:flex-start;margin:6px 0;font-size:14.5px}
/* ---------- speaking / recorder ---------- */
.stage{max-width:860px;margin:0 auto;padding:24px 20px 40px}
.examiner{display:flex;gap:14px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px 18px}
.examiner .face{width:64px;height:64px;border-radius:50%;flex:none;background:radial-gradient(circle at 50% 38%,#ffd9b8 0 30%,transparent 31%),radial-gradient(circle at 50% 100%,#7330bf 0 46%,transparent 47%),#efe6fa;position:relative}
.examiner .face.talk{box-shadow:0 0 0 4px #ffd84d88;animation:talk .5s infinite alternate}@keyframes talk{to{box-shadow:0 0 0 9px #ffd84d33}}
.qbig{font:700 clamp(19px,2.2vw,25px)/1.35 Outfit;margin:16px 0 6px}
.cue{border:2px solid #25183a;border-radius:14px;padding:16px 20px;background:#fff;margin:12px 0}.cue h3{margin:0 0 6px}.cue ul{margin:6px 0 4px}
.rec{display:flex;flex-direction:column;align-items:center;gap:10px;margin:18px 0}
.recbtn{width:92px;height:92px;border-radius:50%;border:6px solid #ffe3e0;background:#e5483f;color:#fff;font-size:30px;box-shadow:0 10px 26px #e5483f55;transition:.2s}
.recbtn.on{border-radius:26px;animation:pulse 1.2s infinite}@keyframes pulse{50%{box-shadow:0 0 0 16px #e5483f22}}
.meter{width:min(420px,90%);height:10px;background:#eee8f4;border-radius:9px;overflow:hidden}.meter>div{height:100%;width:0;background:linear-gradient(90deg,#13996b,#ffd84d,#e5483f)}
.timebar{width:min(420px,90%);height:6px;background:#eee8f4;border-radius:9px;overflow:hidden}.timebar>div{height:100%;background:#25183a;width:0}
.big-t{font:900 30px Outfit}
.steps{display:flex;gap:5px;flex-wrap:wrap;margin:10px 0}.steps span{width:28px;height:8px;border-radius:9px;background:#e4dcef}.steps span.done{background:#13996b}.steps span.cur{background:#e06a10}
.reclist .item{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:12px;padding:11px 13px;margin:8px 0;background:#fff}
.reclist audio{height:36px;max-width:100%}
.frame{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.frame span{background:#fff;border:1px solid #e4d9f1;border-radius:99px;padding:4px 10px;font-size:13px}
/* ---------- admin ---------- */
.rowlink{cursor:pointer}.rowlink:hover td{background:#faf6ff}
.subrow{border:1px solid var(--line);border-radius:14px;padding:14px;margin:10px 0;background:#fff}
.subrow .txt{white-space:pre-wrap;background:#faf9fc;border-radius:10px;padding:10px;font-size:14.5px;max-height:260px;overflow:auto;margin:8px 0}
.spark{width:100%;height:120px}
/* ---------- lápis / anotações ---------- */
.ink-fab{position:fixed;right:20px;bottom:20px;z-index:85;width:56px;height:56px;border-radius:18px;background:linear-gradient(140deg,#6723a7,#a046ce);color:#fff;box-shadow:0 10px 28px #3e136457;font-size:26px;border:2px solid #ffffffaa}
.ink-fab.active{background:linear-gradient(140deg,#e2468f,#f07a1a)}.ink-fab.active:after{content:'';position:absolute;top:-3px;right:-3px;width:12px;height:12px;border-radius:50%;background:#13d38b;border:2px solid #fff}
body.playing .ink-fab{bottom:86px}
.annotation-tools{position:fixed;right:18px;bottom:86px;z-index:86;background:#fff;border:1px solid #e2d4f1;border-radius:18px;padding:15px;width:min(318px,calc(100vw - 28px));box-shadow:0 14px 45px #24113e42;display:none;max-height:calc(100dvh - 110px);overflow-y:auto;font-size:13px}
body.playing .annotation-tools{bottom:150px;max-height:calc(100dvh - 170px)}
.annotation-tools.open{display:block}.ann-h{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.ann-h small{display:block;color:#7d6f93;font-size:11px}
.ink-where{display:inline-block;margin-top:4px;font-size:11px;font-weight:800;color:#56208f;background:#f1e6fb;border-radius:99px;padding:2px 9px}
.ink-close{border:0;background:#f3eefa;border-radius:8px;width:30px;height:30px;font-size:18px;color:#5a3c80;flex:none}
.annotation-tools h4{margin:13px 0 4px;font:800 11px 'DM Sans';letter-spacing:1px;color:#7b6c91;text-transform:uppercase}
.ann-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.ann-row button{border:1px solid #dfd4ee;border-radius:9px;background:#faf7fe;color:#502879;padding:6px 9px;font-size:12px}.ann-row button.active{background:#6e2fa6;color:#fff}
.swatches{display:flex;flex-wrap:wrap;gap:7px;margin-top:6px}.swatches button{width:24px;height:24px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c9bdd7;padding:0}.swatches button.active{box-shadow:0 0 0 3px #7630bb}
.sizes button{min-width:31px;height:31px;padding:0 5px}
.font-select{width:100%;margin-top:6px;padding:8px 10px;border:1.5px solid #d9cce8;border-radius:10px;background:#fff;font-size:15px}
#inkCanvas{position:absolute;top:0;left:0;z-index:65;pointer-events:none;touch-action:none}body.inking #inkCanvas{pointer-events:auto;cursor:crosshair}
body.inking[data-inkmode=text] #inkCanvas{cursor:text}body.inking[data-inkmode=erase] #inkCanvas{cursor:cell}
#inkText{position:absolute;top:0;left:0;width:100%;z-index:66;pointer-events:none;overflow:hidden}
.tbox{position:absolute;pointer-events:auto;min-width:90px;min-height:44px;background:rgba(255,255,255,.30);border:1.5px dashed transparent;border-radius:8px;resize:both;overflow:hidden;display:flex;flex-direction:column}
.tbox:hover,.tbox.focus{border-color:#8a54c7aa}
.tbox-bar{display:flex;align-items:center;justify-content:space-between;height:20px;flex:none;opacity:0;transition:opacity .15s;background:#6e2fa6e0;color:#fff;border-radius:6px 6px 0 0;font:700 10px 'DM Sans'}
.tbox:hover .tbox-bar,.tbox.focus .tbox-bar{opacity:1}.tbox-grip{flex:1;padding:0 8px;cursor:grab;user-select:none;touch-action:none;line-height:20px}
.tbox-del{border:0;background:transparent;color:#fff;font-size:15px;width:22px;height:20px;padding:0}
.tbox-text{flex:1;padding:3px 8px 8px;outline:none;line-height:1.3;white-space:pre-wrap;overflow-wrap:anywhere;overflow:auto;cursor:text}.tbox-text:empty:before{content:'Type here…';opacity:.45}
/* ---------- responsive ---------- */
@media(max-width:1150px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:860px){
 .layout{display:block}.main{padding:14px 13px 100px}.top{display:none}
 .mobilehead{display:flex;align-items:center;gap:10px;position:sticky;top:0;background:#1f0a34;color:#fff;z-index:68;padding:8px 12px;min-height:58px}
 .mobilehead img{width:32px;height:38px;object-fit:cover;border-radius:8px}.mobilehead b{font-family:Outfit;font-size:16px}
 .burger{background:#ffffff20;border:1px solid #ffffff35;border-radius:10px;color:#fff;padding:6px 11px;font-size:21px}
 .side{position:fixed;left:0;top:0;bottom:0;height:100dvh;width:min(320px,86vw);z-index:72;transform:translateX(-103%);transition:transform .28s;padding-top:52px}
 .menu-open .side{transform:none}.drawer-close{display:block;position:absolute;right:12px;top:10px;border:0;background:#ffffff20;color:#fff;font-size:26px;border-radius:8px;width:38px;height:38px}
 .scrim{display:block;position:fixed;inset:0;background:#1d0a2f88;opacity:0;visibility:hidden;z-index:71;transition:.25s}.menu-open .scrim{opacity:1;visibility:visible}
 .hero{padding:24px 20px;min-height:190px;border-radius:20px}
 .grid,.grid2,.grid4{grid-template-columns:1fr}
 .auth{grid-template-columns:1fr}.auth .hero{min-height:auto;padding:36px 22px}
 .xbody{display:block;height:auto}.xpane{padding:16px 14px}.xpane.left{border-right:0;border-bottom:4px solid #e9e4f0;max-height:none}
 .xhead{flex-wrap:wrap;padding:8px 12px;gap:8px}.xmeta{display:none}.xtimer{margin-left:auto;min-width:0}
 .qnav{max-height:66px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ---------- impressão A4 ---------- */
@media print{
@page{size:A4 portrait;margin:0}
html,body{width:auto!important;overflow:visible!important;background:#fff!important}
body{font:10pt/1.42 'DM Sans',Arial,sans-serif!important;color:#1f1a28;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.side,.mobilehead,.scrim,.top,.hero,.subbar,.footer,.no-print,.toast,.ink-fab,.annotation-tools,#inkCanvas,#inkText,.actions,.btn,.xhead,.xfoot{display:none!important}
.layout,.main{display:block!important;padding:0!important;margin:0!important;max-width:none!important;min-height:0!important}
.content{animation:none!important}
.print-head{display:flex!important;justify-content:space-between;align-items:flex-end;border-bottom:1.2mm solid var(--acc);padding-bottom:3mm;margin:0 0 5mm}.print-head b{font:900 15pt Outfit,Arial}.print-head span{font-size:8.5pt;color:#555;text-align:right}
.st{margin:4mm 0 2mm!important;display:block!important}.st h2{font-size:14pt!important}
.card,.tile,.stat,.vcard,.helper,.note,.okbox,.badbox,.subrow{box-shadow:none!important;transform:none!important;break-inside:avoid;page-break-inside:avoid}
.card{border:.3mm solid #cfc6da!important;border-radius:3mm!important;padding:4mm 5mm!important;margin:0 0 4mm!important}
.card h3{font-size:12pt!important;break-after:avoid}
.grid,.grid4{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:3mm!important}.grid2{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:2.5mm!important}
.vcard .back{display:block!important}.vcard .say{display:none}
.scroll{overflow:visible!important}table.t{table-layout:fixed;font-size:8.8pt!important}table.t th,table.t td{padding:1.4mm 2mm!important;overflow-wrap:anywhere}
tr,img,svg{break-inside:avoid;page-break-inside:avoid}thead{display:table-header-group}h2,h3,h4{break-after:avoid}p{orphans:3;widows:3}
.stat .num{font-size:18pt!important}
}

/* ===================== v3 additions ===================== */
body[data-skin=glossary]{--hero-bg:#b7791f;--balloon:#e3b45c}
/* sidebar purple all the way down */
.layout{background:linear-gradient(90deg,#2a0f50 0,#2a0f50 280px,transparent 280px)}
.side{align-self:start}
/* hero text: thin dark outline for contrast on coloured cards */
body:not([data-skin=home]):not([data-skin=scores]) .hero h1,body:not([data-skin=home]):not([data-skin=scores]) .hero p,body:not([data-skin=home]):not([data-skin=scores]) .hero .chips span,.endband .eb-in{text-shadow:-.8px -.8px 0 rgba(0,0,0,.6),.8px -.8px 0 rgba(0,0,0,.6),-.8px .8px 0 rgba(0,0,0,.6),.8px .8px 0 rgba(0,0,0,.6),0 2px 8px rgba(0,0,0,.25)}
body:not([data-skin=home]):not([data-skin=scores]) .hero .eyebrow{text-shadow:-.7px -.7px 0 #000a,.7px -.7px 0 #000a,-.7px .7px 0 #000a,.7px .7px 0 #000a}
body[data-skin=home] .hero h1,body[data-skin=scores] .hero h1,.auth .hero h1{color:#1b1404;text-shadow:0 1px 0 #ffffff80}
/* logo: light bulb + graduation cap; lights up on hover */
.logo-wrap{display:inline-flex;width:46px;height:58px;flex:none}.logo-wrap.sm{width:30px;height:38px}.logo-wrap.xl{width:86px;height:110px;margin-bottom:8px}
.logo{width:100%;height:100%;overflow:visible}
.logo .glass{fill:#ffffff14;stroke:#cdbfe0;stroke-width:2;transition:fill .35s,stroke .35s,filter .35s}
.logo .fil{stroke:#a89bb8;transition:stroke .35s}.logo .base{fill:#9d90b0;transition:fill .35s}
.logo .rays{opacity:0;transform-origin:32px 44px;transform:scale(.8);transition:opacity .35s,transform .35s}
.logo .tassel{transform-origin:52px 36px;transition:transform .5s}
.brand:hover .logo .glass,.mobilehead .logo-wrap:hover .logo .glass,.auth .logo-wrap:hover .logo .glass,.endband .logo-wrap:hover .logo .glass{fill:#ffe680;stroke:#ffc400;filter:drop-shadow(0 0 10px #ffd84d) drop-shadow(0 0 22px #ffb30088)}
.brand:hover .logo .fil,.logo-wrap:hover .logo .fil{stroke:#ff8a00}.brand:hover .logo .base,.logo-wrap:hover .logo .base{fill:#d7c9ea}
.brand:hover .logo .rays,.logo-wrap:hover .logo .rays{opacity:1;transform:scale(1)}.brand:hover .logo .tassel,.logo-wrap:hover .logo .tassel{transform:rotate(-12deg)}
.auth .hero .logo .glass{stroke:#6b5a1a;fill:#ffffff40}.auth .hero .logo .fil{stroke:#6b5a1a}.auth .hero .logo .base{fill:#6b5a1a}
.brand img{display:none}
/* purple band with balloons at the bottom of every page */
.endband{position:relative;overflow:hidden;margin:36px -32px -70px;padding:34px 36px 40px;background:#3a1a5e;color:#fff;--balloon:#7b55a6;min-height:150px}
.endband>.balloons{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}.endband .eb-in{position:relative;z-index:1;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.endband .eb-note{flex-basis:100%;font-size:12.5px;color:#e6dbf5;max-width:900px}
.footer{display:none}
@media(max-width:860px){.endband{margin:30px -13px -100px;padding:28px 18px 90px}.layout{background:none}}
body.playing .endband{display:none}
/* level lock */
.levels button.locked{color:#b9a9cb}.lockcard{text-align:center}.lockcard .lockico{font-size:44px}.lockcard table{text-align:left}
/* reading skills */
.skillcard .skico{font-size:30px;line-height:1}
/* explanations + evidence */
.why-main{margin-top:6px}.whylist{margin-top:4px}
.whyrow{display:flex;gap:8px;align-items:flex-start;padding:6px 8px;border-radius:8px;margin:3px 0;background:#ffffff90}
.whyrow .wi{flex:none;width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;color:#fff;margin-top:2px}
.whyrow.ok .wi{background:var(--ok)}.whyrow.no .wi{background:#c9b9cf}.whyrow.no.mine .wi{background:var(--bad)}.whyrow.mine{outline:1.5px solid currentColor}
.whyrow .tag{font-size:10.5px;background:#25183a;color:#fff;border-radius:99px;padding:1px 7px;font-weight:800}
.evq{margin-top:8px;font-size:13.5px;background:#fff;border-radius:8px;padding:7px 9px}
.evchip{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;border-radius:5px;background:var(--ec);color:#fff;font:800 12px Outfit;margin-right:4px}
.evi{border-bottom:3px solid var(--ec);background:color-mix(in srgb,var(--ec) 14%,transparent);border-radius:2px;padding:0 1px;scroll-margin:120px}
.evi .evn{display:inline-block;background:var(--ec);color:#fff;font:800 10px Outfit;border-radius:4px;padding:0 4px;margin-right:3px;vertical-align:2px}
.evi.flash{animation:evflash 1.6s}@keyframes evflash{0%,60%{background:color-mix(in srgb,var(--ec) 45%,transparent)}}
.evhelp{margin:-4px 0 10px}
.linkbtn{border:0;background:transparent;color:var(--acc-ink);font-weight:800;cursor:pointer;padding:0 3px;font-size:13px}
mark.hl{background:#ffe86b}
/* live transcript + correction */
.live{border:1.5px dashed #c8b6e2;border-radius:12px;padding:10px 12px;min-height:54px;background:#fff;font-size:15px;max-width:860px;margin:0 auto}
.transbox{background:#f6f3fb;border-radius:10px;padding:8px 11px;margin:8px 0}.transbox p{margin:3px 0;font-size:14.5px}
.gcheck{border:1px solid #e4dcef;border-radius:12px;padding:10px 12px;margin:8px 0;background:#fff}.gcheck h4{margin:0 0 4px;font-size:14px}
.glist{margin:4px 0;padding-left:18px}.glist li{margin:4px 0;font-size:14px}
.glist .bad{background:#ffe5ec;color:#8f2448;border-radius:4px;padding:0 4px;text-decoration:line-through}.glist .bad.soft{text-decoration:none}.glist .fix{background:#dcf5ea;color:#0c5e44;border-radius:4px;padding:0 4px;font-weight:700}
.okline{color:var(--ok);font-weight:700}
/* glossary */
mark.gw{background:#fff176;color:inherit;border-radius:3px;padding:0 1px;cursor:pointer;box-shadow:0 0 0 1px #f2d30066}
mark.gw.got{background:transparent;box-shadow:none;border-bottom:2px solid #13996b}
.gpop{position:absolute;z-index:95;width:290px;background:#fff;border:1px solid #e4dcef;border-radius:14px;padding:12px;box-shadow:var(--shadow)}
.gp-h{display:flex;align-items:center;gap:6px;margin-bottom:4px}.gp-h b{font-size:17px}.gp-h .say,.gc-h .say{margin-left:auto;border:0;background:var(--acc-soft);border-radius:8px;width:30px;height:30px}
.gp-a{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;align-items:center}
.gbtn{border:1.5px solid;border-radius:9px;padding:5px 10px;font-weight:800;font-size:12.5px;background:#fff}
.gbtn.no{color:var(--bad);border-color:#f0b6c6}.gbtn.no.on{background:var(--bad);color:#fff;border-color:var(--bad)}
.gbtn.yes{color:var(--ok);border-color:#a9e2cb}.gbtn.yes.on{background:var(--ok);color:#fff;border-color:var(--ok)}
.glist-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.gcard{border:1px solid var(--line);border-left:5px solid var(--bad);background:#fff;border-radius:14px;padding:12px 14px}.gcard.got{border-left-color:var(--ok)}
.gc-h{display:flex;align-items:center;gap:8px}.gw-word{font:800 19px Outfit}.gctx{font-size:13.5px;font-style:italic;color:#4a4257;margin:6px 0}
.gadd{display:flex;gap:6px}.gadd .field{padding:6px 10px;width:170px}
@media(max-width:1150px){.glist-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.glist-grid{grid-template-columns:1fr}}
/* ===================== print: A4 with real margins on every page ===================== */
@media print{
@page{size:A4 portrait;margin:0}
html,body{overflow:visible!important}
.layout{background:none!important}.endband,.gpop{display:none!important}
.content{padding:0!important}
.card,.stat,.vcard,.gcard,.tile,.subrow,.helper,.note,.okbox,.badbox{-webkit-box-decoration-break:clone;box-decoration-break:clone}
.card{padding:5mm 6mm!important;margin:0 0 5mm!important}
.grid,.grid2,.grid4,.glist-grid{gap:4mm!important}
.glist-grid,.grid4{grid-template-columns:repeat(2,minmax(0,1fr))!important}
table.t tr{break-inside:avoid}h2,h3,h4{break-after:avoid;page-break-after:avoid}
.st{break-after:avoid}
p,li{orphans:3;widows:3}
mark.gw{background:none!important;box-shadow:none!important}
.evi{background:none!important}
}
body.playing .layout{background:none!important}

/* ===================== v4 ===================== */
/* full-bleed layout: fixed purple sidebar from top to bottom, no side gaps, same style when over-scrolling */
html{background:#f8f6fc;overscroll-behavior:none}
body{min-height:100vh;overscroll-behavior:none;background-attachment:fixed}
.layout{display:block!important;max-width:none!important;margin:0!important;background:none!important;min-height:100vh}
.side{position:fixed!important;left:0;top:0;bottom:0;width:280px;height:100vh!important;z-index:67}
.main{margin-left:280px;padding:24px clamp(18px,3vw,44px) 40px;max-width:none}
body.playing .main{margin-left:0}
.endband{display:none!important}
.sitefoot{margin:36px 0 0;padding:16px 0 4px;border-top:1px solid var(--line);color:#8f82a0;font-size:12px;text-align:center}
@media(max-width:860px){.main{margin-left:0;padding:14px 13px 90px}.side{transform:translateX(-103%)}.menu-open .side{transform:none}}
/* original lamp + graduation cap: dim at rest, lights up on hover */
.lamp{position:relative;display:inline-block;width:46px;height:66px;flex:none}
.lamp img{position:absolute;left:50%;bottom:0;height:54px;transform:translateX(-50%);filter:brightness(.72) saturate(.75);transition:filter .35s;user-select:none;pointer-events:none}
.lamp .capsvg{position:absolute;left:50%;top:1px;width:40px;transform:translateX(-46%) rotate(-7deg);transform-origin:50% 80%;transition:transform .4s;filter:drop-shadow(0 2px 2px #0006)}
.lamp .tassel{transform-origin:53px 29px;transition:transform .5s}
.brand:hover .lamp img,.lamp:hover img{filter:brightness(1.22) saturate(1.35) drop-shadow(0 0 8px #ffe680) drop-shadow(0 0 18px #ffd84d99)}
.brand:hover .lamp .capsvg,.lamp:hover .capsvg{transform:translateX(-46%) rotate(-12deg) translateY(-2px)}.brand:hover .lamp .tassel,.lamp:hover .tassel{transform:rotate(-14deg)}
.lamp.sm{width:30px;height:44px}.lamp.sm img{height:36px}.lamp.sm .capsvg{width:27px}
.lamp.xl{width:100px;height:146px;margin-bottom:10px}.lamp.xl img{height:120px}.lamp.xl .capsvg{width:88px}
.logo-wrap{display:none}
/* custom icons */
.ico{width:1.25em;height:1.25em;vertical-align:-.25em;flex:none}
.ico .d{fill:var(--nc,var(--acc));opacity:.28;stroke:none}
.nav .ic{display:inline-flex;align-items:center;justify-content:center;width:26px;color:var(--nc,#fff)}.nav .ic .ico{width:22px;height:22px}.nav .ic .ico .d{opacity:.38}
.subtabs .ico.tab{width:17px;height:17px;margin-right:5px;vertical-align:-3px}.subtabs .ico .d{fill:currentColor;opacity:.22}.subtabs button.active .ico .d{fill:#fff;opacity:.35}
.ico.inl{width:1.15em;height:1.15em;vertical-align:-.2em}.ico.mini{width:13px;height:13px;margin-left:3px;vertical-align:-1px}.ico.big{width:56px;height:56px;color:var(--acc)}
.say .ico,.linkbtn .ico{width:17px;height:17px}
.ink-fab .ico{width:28px;height:28px}.ink-fab .ico .d{fill:#fff;opacity:.3}
.lvrow{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.camb{display:inline-block;margin-top:6px;font-size:12.5px;font-weight:800;color:#1a5ea8;text-decoration:none;border:1px solid #c9dcf3;border-radius:99px;padding:2px 10px;background:#f2f7fd}.camb:hover{background:#e2eefb}
/* ===================== PDF / print: real header, side and footer margins on EVERY page ===================== */
@media print{
@page{size:A4 portrait;margin:0}
html,body{background:#fff!important;margin:0!important;padding:0!important}
.side,.mobilehead,.sitefoot,.ink-fab,.annotation-tools,#inkCanvas,#inkText,.toast,.gpop{display:none!important}
.main{margin:0!important;padding:0!important;width:auto!important;max-width:100%!important}
.content,.content *{max-width:100%}
.content img,.content svg{max-width:100%;height:auto}
.content table{width:100%!important;table-layout:fixed!important;word-break:break-word;overflow-wrap:anywhere}
.content th,.content td{font-size:8.6pt!important}
.scroll{overflow:visible!important;width:100%!important}
.card,.stat,.gcard,.tile,.subrow{-webkit-box-decoration-break:clone;box-decoration-break:clone}
.ico .d{opacity:.2}
}
/* ===== v4 · Test Center, reports, verb list, answer key ===== */
body[data-skin=tests]{--hero-bg:#1e3a6e;--balloon:#5d82c4}
body[data-skin=verbs]{--hero-bg:#2f7d4f;--balloon:#6fbf8c}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.tgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.tcard{position:relative;background:#fff;border:1px solid #e6e0f2;border-radius:18px;padding:16px 18px 14px;box-shadow:0 6px 18px -12px #2b1a5e55;overflow:hidden}
.tcard::before{content:"";position:absolute;inset:0 auto 0 0;width:6px;background:var(--tc,#5d82c4)}
.tcard.half{--tc:#3c8dbc}.tcard.full{--tc:#7a2e8e}
.tcard h3{margin:6px 0 2px;font-size:19px}.tcard p{margin:4px 0}
.tc-top{display:flex;align-items:center;justify-content:space-between}
.tc-k{font:800 11px Outfit,sans-serif;letter-spacing:.14em;color:var(--tc)}
.tc-n{font:900 30px Outfit,sans-serif;color:var(--tc);opacity:.22;line-height:1}
.tc-state{display:inline-flex;align-items:center;gap:6px;margin:8px 0 2px;padding:4px 10px;border-radius:99px;font-size:12.5px;font-weight:700;background:#f1eef8;color:#4a3d6b}
.tcard.open .tc-state{background:#e5f4ea;color:#17673a}.tcard.done .tc-state{background:#e7effb;color:#1f4f8f}
.tcard.lock{background:#faf9fc}.tcard.lock h3,.tcard.soon h3{color:#6b6480}.tcard.soon{opacity:.72;border-style:dashed}
.ico.mini{width:1.05em;height:1.05em;vertical-align:-.18em}
.tsteps{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.tsteps span{font-size:12px;font-weight:700;padding:4px 10px;border-radius:99px;background:#f1eef8;color:#6b6480}
.tsteps span.ok{background:#e5f4ea;color:#17673a}.tsteps span.cur{background:#1e3a6e;color:#fff}
.rep-top{display:flex;gap:20px;align-items:stretch;flex-wrap:wrap}
.rep-score{flex:0 0 220px;border-radius:16px;background:linear-gradient(135deg,#1e3a6e,#7a2e8e);color:#fff;padding:18px;text-align:center;display:flex;flex-direction:column;justify-content:center}
.rep-score small{font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.85}.rep-score b{font:900 58px Outfit,sans-serif;line-height:1.05}.rep-score span{font-size:12.5px;opacity:.9}
.rep-skills{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.rep-sk{border:1px solid #e6e0f2;border-radius:14px;padding:12px;display:grid;grid-template-columns:auto 1fr auto;gap:2px 8px;align-items:center}
.rep-sk span .ico{width:26px;height:26px}.rep-sk b{font-size:14px}.rep-sk em{font:900 26px Outfit,sans-serif;font-style:normal;color:#1e3a6e}.rep-sk small{grid-column:1/-1;color:#6b6480;font-size:12px}
.okcard{border-left:5px solid #1f9e46}.warncard{border-left:5px solid #e3a008}
.vtools{display:flex;gap:12px;align-items:center;margin:0 0 12px}.vtools .input{max-width:380px}
.vrow{cursor:pointer}.vrow:hover td{background:#f6f2fd}.vrow.open td{background:#eef7f1}
.vbox{display:grid;gap:6px;padding:6px 4px;font-size:14.5px;line-height:1.55}
.vt{display:inline-block;min-width:118px;font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;padding:2px 8px;border-radius:6px;margin-right:6px;color:#fff}
.vt.b{background:#2f7d4f}.vt.p{background:#3c5aa8}.vt.pp{background:#9a3d8f}
mark.vmark{background:#fff1a8;padding:0 2px;border-radius:3px;font-weight:700}
.keyset{break-inside:auto}.keyt td{vertical-align:top}.keyt td:nth-child(3){min-width:120px}
@media (max-width:820px){.tgrid,.grid3{grid-template-columns:1fr}.rep-score{flex:1 1 100%}}
@media print{.vex[hidden]{display:table-row!important}.vex .actions{display:none}.tgrid{grid-template-columns:1fr 1fr!important}.rep-score{background:#1e3a6e!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.keyset{box-shadow:none!important;border:0!important;padding:0!important;margin:0 0 5mm!important}.keyt{font-size:9pt}}
.brand .lamp img,.lamp img{display:block!important;width:auto!important;object-fit:contain!important;border-radius:0!important}
.brand .lamp img{height:54px!important}.lamp.sm img{height:36px!important}.lamp.xl img{height:120px!important}
body[data-skin=tests] .subtabs button{--c:#1e3a6e;--cs:#e8eef9}body[data-skin=verbs] .subtabs button{--c:#2f7d4f;--cs:#e6f4ea}
.vtools .input,.keyfilters select,.grid3 select.input{width:100%;padding:10px 12px;border:1.5px solid #ddd3ee;border-radius:12px;font:inherit;font-size:14.5px;background:#fff;color:#1d1530;outline:none}
.vtools .input:focus,.grid3 select.input:focus{border-color:#7a2e8e;box-shadow:0 0 0 3px #7a2e8e22}
.grid3 label.label{display:flex;flex-direction:column;gap:6px;font-weight:800;font-size:13px;color:#4a3d6b}
/* v5 · login media (brochure photo + looping video at 70% transparency) */
.auth-box{position:relative;overflow:hidden;background:#efedf3}
.auth-media{position:absolute;inset:0;z-index:0}
.auth-media img,.auth-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.auth-media video{opacity:.7}
.auth-media::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,#ffffff55 0,#ffffff00 60%)}
.auth-card{position:relative;z-index:1;background:#ffffffee;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.auth-media img{object-position:28% 40%}
/* ===== v5 · avatar, modals, guide, ranking, certificates, answer-key picker ===== */
.brandrow{display:flex;align-items:center;justify-content:space-between;gap:8px}
.avatar-btn{flex:0 0 auto;border:0;background:none;padding:0;border-radius:50%;cursor:pointer;position:relative}
.avatar-btn::after{content:"";position:absolute;right:-1px;bottom:-1px;width:15px;height:15px;border-radius:50%;background:#ffd84d url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 8h3.5l1.5-2.5h6L16.5 8H20v11H4z' fill='none' stroke='%231e0a33' stroke-width='2.4'/%3E%3C/svg%3E") center/10px no-repeat;border:2px solid #2a0f48}
.avatar{display:inline-block;border-radius:50%;object-fit:cover;flex:0 0 auto;border:2px solid #ffffffcc;box-shadow:0 3px 10px -4px #0006;vertical-align:middle}
.avatar.ph{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-family:Outfit,sans-serif}
.slx-modal{position:fixed;inset:0;z-index:2000;background:#1a0b2ecc;backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:28px 14px}
.slx-box{background:#fff;border-radius:22px;padding:24px;width:min(480px,100%);box-shadow:0 30px 80px -20px #000a;margin:auto}
.slx-box.wide{width:min(980px,100%)}
.crop-wrap{position:relative;width:min(320px,100%);aspect-ratio:1;margin:0 auto 12px;border-radius:18px;overflow:hidden;background:#f1eef8;touch-action:none}
.crop-wrap canvas{width:100%;height:100%;display:block;cursor:grab}.crop-wrap canvas:active{cursor:grabbing}
.crop-ring{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 0 49.5%,#1a0b2e88 50%)}
.crop-ring::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px dashed #fff}
.crop-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#5b4b78;font-weight:700;cursor:pointer}.crop-empty .ico{width:44px;height:44px}
.crop-ctrl{display:flex;align-items:center;gap:10px;max-width:320px;margin:0 auto 6px}.crop-ctrl input{flex:1;accent-color:#7a2e8e}
.slx-welcome{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.slx-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.slx-step{display:flex;gap:12px;align-items:flex-start;background:#faf8fd;border:1px solid #ece6f6;border-radius:14px;padding:12px}
.slx-step .n{flex:0 0 30px;height:30px;border-radius:50%;background:#3b1466;color:#ffd84d;font:800 14px Outfit,sans-serif;display:flex;align-items:center;justify-content:center}
.slx-step p{margin:4px 0 0;font-size:13.5px;line-height:1.5;color:#4a3d6b}
.slx-dev{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:12px}.slx-dev>div{border:1px solid #ece6f6;border-radius:14px;padding:12px 14px}.slx-dev h4{margin:0 0 6px;font-size:14.5px}
.podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px;align-items:end}
.pod{position:relative;background:#fff;border:1px solid #e6e0f2;border-radius:20px;padding:20px 16px 14px;text-align:center;box-shadow:0 10px 30px -18px #2b1a5e66}
.pod.p1{order:2;border:2px solid #e3b23c;padding-top:28px;background:linear-gradient(180deg,#fff8e1,#fff)}.pod.p2{order:1}.pod.p3{order:3}
.pod .pos{position:absolute;top:-14px;left:50%;transform:translateX(-50%);width:30px;height:30px;border-radius:50%;background:#3b1466;color:#ffd84d;font:900 15px Outfit,sans-serif;display:flex;align-items:center;justify-content:center}
.pod.p1 .pos{background:#e3b23c;color:#3b1466}
.pod b{display:block;margin-top:8px;font-size:16px}.pod .idx{display:block;font:900 30px Outfit,sans-serif;color:#3b1466;line-height:1.1;margin-top:4px}.pod small{color:#6b6480}
.pod ul{list-style:none;padding:0;margin:10px 0 0;font-size:12.5px;color:#4a3d6b;text-align:left}.pod li{padding:3px 0 3px 18px;position:relative}.pod li::before{content:"★";position:absolute;left:0;color:#e3b23c}
.rk-st{display:flex;align-items:center;gap:9px}.rank td{vertical-align:middle}
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.ccard{background:#fff;border:1px solid #e6e0f2;border-radius:16px;overflow:hidden}
.cthumb{position:relative;width:100%;aspect-ratio:297/210;overflow:hidden;background:#f3f0f8}
.cscale{position:absolute;left:0;top:0;width:1009px;height:680px;transform-origin:0 0;transform:scale(var(--k,.3))}
.cscale .cx{width:1009px;height:680px}
.cmeta{padding:12px 14px;display:grid;gap:6px}
.ok-t{color:#17673a;font-weight:700}
.kpick{margin:12px 0 4px;border:1px solid #e6e0f2;border-radius:12px;padding:10px 14px;background:#fbfafe}.kpick summary{cursor:pointer}
.kgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 14px;max-height:360px;overflow:auto;padding:4px}
.kgrid label{display:flex;gap:8px;align-items:flex-start;font-size:13px;padding:6px;border-radius:8px}.kgrid label:hover{background:#f3eefb}
/* certificate */
.cx{position:relative;background:#fffdf8;color:#1d1530;font-family:'DM Sans',sans-serif;overflow:hidden;box-sizing:border-box}
.cx-guil{position:absolute;inset:0;width:100%;height:100%}
.cx-frame{position:absolute;inset:14px;border:2px solid var(--b);outline:1px solid var(--c);outline-offset:-8px}
.cx-corner{position:absolute;width:64px;height:64px;border:3px solid var(--c)}.cx-corner.tl{top:26px;left:26px;border-right:0;border-bottom:0}.cx-corner.tr{top:26px;right:26px;border-left:0;border-bottom:0}.cx-corner.bl{bottom:26px;left:26px;border-right:0;border-top:0}.cx-corner.br{bottom:26px;right:26px;border-left:0;border-top:0}
.cx::before{content:"";position:absolute;left:0;top:0;bottom:0;width:10px;background:linear-gradient(var(--a),var(--b))}
.cx-in{position:relative;height:100%;padding:44px 64px 40px;display:flex;flex-direction:column;align-items:center;text-align:center;box-sizing:border-box}
.cx-head{width:100%;display:flex;justify-content:space-between;align-items:center}
.cx-brand{display:flex;align-items:center;gap:10px;text-align:left}.cx-brand img{height:52px}.cx-brand b{display:block;font:800 15px Outfit,sans-serif;letter-spacing:.12em;color:var(--b)}.cx-brand small{font-size:10.5px;color:#6b6480;letter-spacing:.06em}
.cx-no{font-size:10.5px;color:#6b6480;letter-spacing:.06em}
.cx-kicker{margin-top:18px;font:700 12px 'DM Sans',sans-serif;letter-spacing:.32em;text-transform:uppercase;color:var(--a)}
.cx-title{font:700 40px 'Cormorant Garamond',Georgia,serif;color:var(--b);margin-top:4px;line-height:1.05}
.cx-pre{margin-top:16px;font:italic 600 17px 'Cormorant Garamond',Georgia,serif;color:#4a3d6b}
.cx-name{font:400 54px 'Great Vibes','Brush Script MT',cursive;color:var(--a);line-height:1.15;margin:2px 0 4px;padding:0 20px;border-bottom:1px solid var(--c)}
.cx-text{max-width:740px;font-size:14.5px;line-height:1.55;color:#2d2442;margin-top:10px}
.cx-mini{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 10px;margin-top:10px}.cx-mini span{font-size:11.5px;border:1px solid #e6dcc4;border-radius:99px;padding:3px 10px;background:#fff}
.cx-facts{display:flex;gap:16px;margin-top:14px}.cx-facts div{min-width:150px;border-top:3px solid var(--c);background:#fff;padding:8px 14px;box-shadow:0 6px 16px -12px #0004}.cx-facts small{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#6b6480}.cx-facts b{font:800 19px Outfit,sans-serif;color:var(--b)}
.cx-foot{margin-top:auto;width:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:20px}
.cx-sign,.cx-date{display:flex;flex-direction:column;align-items:center}.cx-sign img{height:92px;margin-bottom:-12px}.cx-line{width:210px;border-top:1.5px solid #1d1530;margin:4px 0 5px}
.cx-sign b,.cx-date b{font-size:14px}.cx-sign small,.cx-date small{font-size:11px;color:#6b6480}
.cx-seal{width:118px;height:118px;filter:drop-shadow(0 6px 10px #0003)}
.cx.master{background:radial-gradient(ellipse at top,#fff9ea,#fffdf8 60%)}.cx.master .cx-title{font-size:44px}
@media (max-width:820px){.slx-steps,.slx-dev,.podium{grid-template-columns:1fr}.pod.p1,.pod.p2,.pod.p3{order:0}}

@media (min-width:821px){.auth{grid-template-columns:minmax(440px,.78fr) 1fr}.auth .hero{padding-left:4.4vw;padding-right:4.4vw}}

.auth-card{background:rgba(255,255,255,.95)!important;border:2px solid var(--purple)!important;box-shadow:0 22px 60px -24px #3b146699,0 0 0 6px #7330bf14!important}
.auth-media::after{background:radial-gradient(ellipse at center,#ffffff33 0,#ffffff00 55%)}
/* v5.1 · Complete the Words: one slot per missing letter (as in the TOEFL iBT), word kept together */
.ctw{line-height:2.5;font-size:17px}
.ctw .cw{white-space:nowrap;display:inline-flex;align-items:baseline}
.ctw input{font:700 17px/1.2 'Courier New',ui-monospace,monospace!important;width:calc(var(--n) * 1.45ch + .3ch)!important;letter-spacing:.45ch!important;padding:0 0 2px .25ch!important;margin:0 1px;border:0!important;border-radius:3px 3px 0 0!important;
  background:linear-gradient(#eef3fb,#eef3fb) top/100% calc(100% - 3px) no-repeat,repeating-linear-gradient(90deg,#1d4f91 0 1.1ch,transparent 1.1ch 1.45ch) .2ch 100%/100% 2.5px no-repeat!important;color:#14325c}
.ctw input:focus{outline:2px solid #7330bf55;outline-offset:2px}
.ctw input.good{background:linear-gradient(#dcf5ea,#dcf5ea) top/100% calc(100% - 3px) no-repeat,repeating-linear-gradient(90deg,var(--ok) 0 1.1ch,transparent 1.1ch 1.45ch) .2ch 100%/100% 2.5px no-repeat!important}
.ctw input.bad{background:linear-gradient(#ffe5ec,#ffe5ec) top/100% calc(100% - 3px) no-repeat,repeating-linear-gradient(90deg,var(--bad) 0 1.1ch,transparent 1.1ch 1.45ch) .2ch 100%/100% 2.5px no-repeat!important}
/* v5.1 · lamp 30% smaller, cap unchanged */
.lamp{height:52px}.brand .lamp img,.lamp img{height:38px!important}
.lamp.sm{height:34px}.lamp.sm img{height:25px!important}
.lamp.xl{height:116px}.lamp.xl img{height:84px!important}
/* v5.2 · single logo (cap fitted on the bulb) */
.lamp{width:46px!important;height:62px!important}.lamp img{position:static!important;transform:none!important;height:62px!important;width:auto!important}
.lamp.sm{width:30px!important;height:40px!important}.lamp.sm img{height:40px!important}
.lamp.xl{width:100px!important;height:134px!important}.lamp.xl img{height:134px!important}
.lamp .capsvg{display:none!important}
.cx-brand img{height:58px}
.brand .lamp{width:40px!important;height:54px!important}.brand .lamp img{height:54px!important}
/* v6 · logo = bulb only */
.lamp{width:34px!important;height:54px!important}.brand .lamp{width:34px!important;height:54px!important}.lamp img,.brand .lamp img{height:54px!important}
.lamp.sm{width:22px!important;height:36px!important}.lamp.sm img{height:36px!important}
.lamp.xl{width:76px!important;height:124px!important}.lamp.xl img{height:124px!important}

/* v6 · PDF margins built into the document (1.5 cm on every side of every page, whatever the print dialog says) */
@media print{
 table.pwrap{width:100%;border-collapse:collapse;border:0;margin:0}
 table.pwrap>thead>tr>td,table.pwrap>tfoot>tr>td,table.pwrap>tbody>tr>td{padding:0 15mm!important;border:0!important;background:none!important}
 .pw-h{height:15mm;display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:2.5mm;box-sizing:border-box;font:600 8pt Arial,sans-serif;color:#7b6c91}
 .pw-h span+span{font-weight:400;color:#9a8fab}
 .pw-f{height:15mm;display:flex;align-items:flex-start;justify-content:center;padding-top:2.5mm;box-sizing:border-box;font:8pt Arial,sans-serif;color:#9a8fab}
}
@media screen{table.pwrap>thead,table.pwrap>tfoot{display:none}table.pwrap,table.pwrap>tbody,table.pwrap>tbody>tr,table.pwrap>tbody>tr>td{display:block;padding:0;border:0}}

/* v9 guide: video tour + modes table */
.slx-video video{width:100%;max-width:960px;aspect-ratio:16/9;border-radius:10px;background:#000;display:block}
.slx-modes{overflow-x:auto}.slx-modes table{min-width:620px}.slx-modes th,.slx-modes td{vertical-align:top;font-size:14px}
.slx-modes tbody th{text-align:left;white-space:nowrap}

/* answer key: very long pages are painted lazily (fixes the blank page) */
.keywrap{content-visibility:auto;contain-intrinsic-size:auto 900px}
@media print{.keywrap{content-visibility:visible}}


.auth-card .input,.auth-card input,.auth-card select{background:rgba(255,255,255,.92)}

@media (max-width:820px){
 .auth .hero{padding:22px 20px 26px!important}
 .auth .hero .logo-wrap,.auth .hero .lamp{transform:scale(.7);transform-origin:left top;margin-bottom:-20px}
 .auth .hero h1{font-size:clamp(26px,7.4vw,34px)!important;margin:6px 0 6px}
 .auth .hero p{font-size:15px;line-height:1.45;margin:0}
 .auth .hero .chips,.auth .hero .tags,.auth .hero .pills{display:none}
 .auth-box{padding:22px 14px 40px;min-height:0}
 .auth-card{padding:22px 18px}
}

/* v11 phones & installed app (iPhone / Android): notch and home-bar safe areas, real viewport height, no input zoom */
@supports (height:100dvh){.layout,.auth,body{min-height:100dvh}.side{height:100dvh!important}.auth .hero{min-height:100dvh}.xbody{height:calc(100dvh - 121px - env(safe-area-inset-bottom,0px))}}
.mobilehead{padding-top:max(10px,env(safe-area-inset-top,0px))}
.side{padding-bottom:max(18px,env(safe-area-inset-bottom,0px))}
@media (max-width:860px){.side{padding-top:calc(52px + env(safe-area-inset-top,0px))!important}}
.xfoot{padding-bottom:max(8px,env(safe-area-inset-bottom,0px))}
.xhead{padding-top:max(8px,env(safe-area-inset-top,0px))}
.toast{bottom:max(20px,calc(env(safe-area-inset-bottom,0px) + 14px))}
@media (max-width:860px){
 body{background-attachment:scroll!important}
 input,select,textarea,.input{font-size:16px!important}
 .main{padding-left:max(13px,env(safe-area-inset-left,0px));padding-right:max(13px,env(safe-area-inset-right,0px));padding-bottom:max(90px,calc(70px + env(safe-area-inset-bottom,0px)))}
 .main table.t{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
 .ink-fab,.annot-fab,#inkFab,.inkbtn{bottom:max(84px,calc(78px + env(safe-area-inset-bottom,0px)))!important;right:max(12px,env(safe-area-inset-right,0px))!important;transform:scale(.86)}
 .auth{padding-top:env(safe-area-inset-top,0px)}
}

.eliot-av{object-fit:cover;border-radius:50%;background:#dfccfa}
.crop-empty .crop-eliot{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.35;border-radius:inherit}
.crop-empty{position:absolute}.crop-empty svg,.crop-empty span{position:relative;z-index:1}
/* ===== v11 Professor Eliot ===== */
.eliot-face{border-radius:50%;object-fit:cover;flex:none;background:#dfccfa;box-shadow:0 0 0 3px #fff,0 0 0 6px #8b3fd1,0 10px 24px -10px #3b146688}
.eliot-face.big{box-shadow:0 0 0 4px #fff,0 0 0 8px #8b3fd1,0 18px 40px -16px #3b1466aa}
.eliot-say{display:flex;gap:14px;align-items:flex-start}
.eliot-say.card{padding:16px}
.eliot-bubble{position:relative;background:#f6f0ff;border:1px solid #e2d4f1;border-radius:16px;padding:10px 14px;flex:1;min-width:0;line-height:1.5}
.eliot-bubble::before{content:"";position:absolute;left:-8px;top:18px;width:14px;height:14px;background:#f6f0ff;border-left:1px solid #e2d4f1;border-bottom:1px solid #e2d4f1;transform:rotate(45deg)}
.eliot-bubble.solo::before{display:none}
.eliot-name{color:#5b1f9a;display:inline-block;margin-right:6px}.eliot-sub{font-size:12px;color:var(--muted,#6b6280)}
.eliot-card .el-score{display:grid;grid-template-columns:minmax(150px,200px) 1fr;gap:18px;align-items:center;margin:14px 0 6px;padding:14px;border-radius:14px;background:linear-gradient(135deg,#faf6ff,#fff)}
.el-big{font:900 40px/1.1 Outfit,system-ui;color:#6b23b0;margin:2px 0}
.el-crits{display:grid;gap:8px}
.el-crit{display:grid;grid-template-columns:minmax(0,1fr) 120px 36px;gap:10px;align-items:center;font-size:14px}
.el-bar,.el-track{height:9px;border-radius:9px;background:#ece4f7;position:relative;overflow:visible}
.el-bar i,.el-track i{position:absolute;inset:0 auto 0 0;border-radius:9px;background:linear-gradient(90deg,#8b3fd1,#c06ae8)}
.el-track u{position:absolute;top:-4px;width:3px;height:17px;background:#f0b400;border-radius:2px;text-decoration:none}
.el-track.sm{height:7px;margin:6px 0}
.el-h{margin:14px 0 6px;font-size:15px}
.el-list{margin:0;padding-left:20px;display:grid;gap:5px}.el-list.ok{list-style:"✓  ";color:#1f6b3e}.el-list.ok li{color:var(--ink,#1d1626)}
.el-hero{display:flex;gap:24px;align-items:center;background:linear-gradient(120deg,#fff 40%,#f4ecff)}
.el-hero h2{margin:2px 0 0;font-size:28px}.el-hero-t{flex:1;min-width:0}
.eyebrow-s{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#8b3fd1;font-weight:800}
.el-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:13px 0}
.el-kpi{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin:0}
.el-kv{font:900 34px/1.1 Outfit,system-ui;color:#2a1640}
.el-ring{width:96px;height:96px;transform:rotate(-90deg)}.el-ring circle{fill:none;stroke-width:12}.el-ring .bg{stroke:#ece4f7}.el-ring .fg{stroke:#8b3fd1;stroke-linecap:round}
.el-ring .fg.ok{stroke:#1f9d5b}.el-ring .fg.gold{stroke:#e0a800}.el-ring .fg.blue{stroke:#3a7bd5}.el-ring .fg.muted{stroke:#a99bbd}
.el-ring text{transform:rotate(90deg);transform-origin:60px 60px;font:900 24px Outfit,system-ui;fill:#2a1640;text-anchor:middle}
.el-pill{display:inline-block;font-size:12px;font-weight:800;border-radius:999px;padding:3px 10px;background:#ece4f7;color:#5b1f9a}
.el-pill.ok{background:#dff5e8;color:#16683a}.el-pill.gold{background:#fff1c2;color:#7a5600}.el-pill.blue{background:#e2edfc;color:#1f4f99}
.el-skill{padding:10px 0;border-bottom:1px solid #f0eaf7}.el-skill:last-child{border-bottom:0}
.el-sk-h{display:flex;justify-content:space-between;gap:10px;margin-bottom:6px}
.el-imp{margin:0;padding-left:22px;display:grid;gap:12px}.el-imp li>div:first-child{font-weight:600}
.el-plan{display:grid;gap:10px}
.el-step{display:flex;align-items:center;gap:12px;text-align:left;width:100%;border:1px solid #e2d4f1;background:#fff;border-radius:14px;padding:12px 14px;cursor:pointer;font:inherit;color:inherit}
.el-step:hover{border-color:#8b3fd1;box-shadow:0 8px 22px -14px #3b146688}
.el-step .n{width:30px;height:30px;border-radius:50%;background:#8b3fd1;color:#fff;font-weight:900;display:grid;place-items:center;flex:none}
.el-step .go{margin-left:auto;color:#8b3fd1;font-weight:900}
.el-spark{width:100%;height:84px}.el-spark .l{fill:none;stroke:#8b3fd1;stroke-width:2.5}.el-spark .a{fill:#8b3fd11a}.el-spark circle{fill:#8b3fd1}.el-spark .g{stroke:#e0a800;stroke-dasharray:4 4;stroke-width:1.5}
.el-badges{display:flex;flex-wrap:wrap;gap:8px}.el-badge{display:inline-flex;align-items:center;gap:6px;border:1px solid #e2d4f1;border-radius:999px;padding:5px 11px;font-size:13px;font-weight:700;background:#fffaf0}.el-badge i{font-style:normal}
.el-home{display:flex;gap:16px;align-items:center;cursor:pointer;background:linear-gradient(120deg,#fff 50%,#f4ecff);margin-bottom:13px}
.el-home:hover{box-shadow:0 14px 36px -20px #3b1466aa}
.el-home-row{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:4px}
.el-after{margin-bottom:13px}
.nav-eliot .ic img{width:24px;height:24px;border-radius:50%;object-fit:cover;box-shadow:0 0 0 2px #f3cf72}
.examiner .face.eliot{background:#dfccfa;overflow:hidden;box-shadow:0 0 0 3px #fff,0 0 0 5px #8b3fd1}
.examiner .face.eliot img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.examiner .face.eliot.talk{box-shadow:0 0 0 3px #fff,0 0 0 5px #8b3fd1,0 0 0 10px #ffd84d88}
@media (max-width:860px){
 .el-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
 .el-hero{flex-direction:column;align-items:flex-start;gap:14px}
 .eliot-card .el-score{grid-template-columns:1fr}
 .el-crit{grid-template-columns:minmax(0,1fr) 80px 32px;font-size:13px}
 .el-home{flex-wrap:wrap}.el-home .linkbtn{width:100%}
 .el-kv{font-size:28px}
}
body[data-skin=me] .subtabs button{--c:#6b23b0;--cs:#f3ecfb}

/* v12 Task 1 visuals: table, process, map */
.ctable .ctitle,.cmap .ctitle{font-weight:800;text-align:center;margin:4px 0 10px}
.ctable table{max-width:640px;margin:auto}
.cmap-g{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:stretch}
.cmap-p{border:1.5px solid #5b2a91;border-radius:14px;padding:12px 14px;background:#faf6ff}.cmap-p ul{margin:6px 0 0;padding-left:18px}
.cmap-arrow{align-self:center;font-size:28px;color:#5b2a91;font-weight:900}
@media(max-width:600px){.cmap-g{grid-template-columns:1fr}.cmap-arrow{transform:rotate(90deg);justify-self:center}}

/* v13 login: the video sits in front of the yellow panel and dissolves into it over 1½ balloons (≈92px) */
.auth{position:relative}
.auth .hero{position:relative;z-index:1}
.auth-box{position:relative;z-index:2;overflow:visible!important;background:transparent!important}
.auth-media{left:-92px!important;background:#efedf3;-webkit-mask-image:linear-gradient(to right,transparent 0,rgba(0,0,0,.35) 40px,#000 92px);mask-image:linear-gradient(to right,transparent 0,rgba(0,0,0,.35) 40px,#000 92px)}
.auth-media video{opacity:.72;will-change:auto}
.auth-card{background:rgba(255,255,255,.66)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.auth-card .field,.auth-card .seg{background:rgba(255,255,255,.88)}
.auth-eliot{display:block;height:clamp(150px,24vh,250px);width:auto;margin:0 0 6px -6px;filter:drop-shadow(0 12px 18px rgba(60,40,0,.28));position:relative;z-index:1}
@media (max-width:820px){
 .auth-media{left:0!important;top:-60px!important;-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.35) 26px,#000 60px);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.35) 26px,#000 60px)}
 .auth-eliot{height:150px;transform:none;margin-bottom:0}
}
.auth .hero img.auth-eliot{width:auto!important;max-width:none!important;aspect-ratio:520/1093;object-fit:contain;border-radius:0!important}
.auth .hero img.auth-eliot{align-self:flex-start}

/* v13 photo dialog: the whole circle is the frame; drag & drop */
.crop-wrap{width:min(380px,82vw)!important;border-radius:50%!important;box-shadow:0 0 0 4px #fff,0 0 0 7px #8b3fd1,0 18px 40px -18px #3b146699;margin:6px auto 16px!important}
.crop-ring{background:none!important}.crop-ring::after{border:2px dashed #ffffffaa!important}
.crop-empty{cursor:default!important;pointer-events:none}
.crop-drop{position:absolute;inset:0;border-radius:50%;display:none;align-items:center;justify-content:center;background:#8b3fd1cc;color:#fff;font-weight:800;font-size:18px;pointer-events:none}
.crop-wrap.over .crop-drop{display:flex}

.brand-eliot{height:78px;width:auto;aspect-ratio:180/378;object-fit:contain;flex:none;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35));transition:transform .25s}
.brand:hover .brand-eliot{transform:translateY(-3px) rotate(-2deg)}
.brand-eliot.sm{height:40px}
.crop-empty[hidden]{display:none!important}
.brand img.brand-eliot{display:block!important;width:auto!important;height:78px!important;object-fit:contain!important;border-radius:0!important;filter:drop-shadow(0 6px 10px rgba(0,0,0,.35))!important}
.brand:hover img.brand-eliot{filter:drop-shadow(0 0 10px #ffd84d88)!important}
.mobilehead img.brand-eliot.sm{height:44px!important;width:auto!important;object-fit:contain;margin:-4px 0}

/* ===================== v15 · performance ===================== */
/* the page glow is painted once on a fixed layer instead of with background-attachment:fixed (which forced a full
   repaint on every scroll on phones) */
body{background:var(--bg)!important;background-attachment:scroll!important}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 95% 0%,#f1e5ff 0,transparent 32%),var(--bg);transform:translateZ(0)}
/* the content of each screen fades in quickly instead of sliding */
.content{animation:slFade .14s ease-out both!important}@keyframes slFade{from{opacity:.55}to{opacity:1}}
/* instant feedback on taps */
button,a,.tile,[data-level]{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.levels button:active{transform:scale(.96)}
/* large lists skip rendering off-screen cards until they are scrolled into view */
.tiles>.tile,.reclist .item,.gl-list>*{content-visibility:auto;contain-intrinsic-size:auto 160px}

/* ===================== v15 · CEFR placement test ===================== */
.pl-loading{padding:40px;text-align:center;color:var(--muted)}
.pl-intro{display:grid;gap:16px}
.pl-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.pl-grid>.card{margin:0}
@media(max-width:860px){.pl-grid{grid-template-columns:1fr}}
.pl-secs h3,.pl-rules h3,.pl-report h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font:800 17px Outfit;color:#1e0a33}
.pl-sec{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.pl-sec:last-child{border:0}
.pl-sec b{display:flex;align-items:center;gap:6px;font:700 15px Outfit;color:#1e0a33}.pl-sec small{display:block;color:var(--muted);font-size:13px;line-height:1.4}
.pl-num{flex:none;width:30px;height:30px;border-radius:50%;background:#1e0a33;color:#ffd84d;display:grid;place-items:center;font:800 14px Outfit}
.pl-min{margin-left:auto;flex:none;background:#f2eefa;color:#5c2a91;font:800 13px Outfit;border-radius:20px;padding:4px 10px}
.pl-rules ul{margin:0 0 12px;padding-left:18px}.pl-rules li{margin:6px 0;line-height:1.45}
.pl-ok{display:flex;gap:10px;align-items:flex-start;background:#fff8dd;border:1px solid #f3dc87;border-radius:12px;padding:10px 12px;font-weight:700;cursor:pointer}.pl-ok input{margin-top:4px;accent-color:#5c2a91;width:18px;height:18px}
.pl-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px;align-items:center}.pl-actions .btn[disabled]{opacity:.45;cursor:not-allowed}
.pl-seal{display:flex;gap:14px;align-items:center;background:linear-gradient(135deg,#fbf9ff,#fff8e6);border:1px solid #ece3f7;border-radius:16px;padding:14px 16px}
.pl-seal-badge svg{width:64px;height:64px;display:block}.pl-seal b{display:block;font:800 15px Outfit;color:#1e0a33}.pl-seal span{display:block;font-size:13px;color:#4a405c;line-height:1.45}.pl-seal small{display:block;margin-top:4px;color:var(--muted);font-size:11.5px}
.pl-seal.sm{padding:10px 12px}.pl-seal.sm .pl-seal-badge svg{width:48px;height:48px}
/* runner */
.pl-head .pl-logo{background:#1e0a33;color:#ffd84d;display:flex;align-items:center;gap:6px;font:800 13px Outfit;letter-spacing:1px;padding:6px 10px;border-radius:8px}
.pl-steps{display:flex;gap:6px;flex-wrap:wrap;padding:8px 16px;background:#faf8fd;border-bottom:1px solid #ece6f3}
.pl-steps span{font:700 12px Outfit;color:#8b809b;background:#fff;border:1px solid #e6dff0;border-radius:20px;padding:4px 10px}
.pl-steps span.on{background:#1e0a33;color:#ffd84d;border-color:#1e0a33}.pl-steps span.done{color:#0d8a62;border-color:#bfe8d7;background:#effaf5}
.pl-stage{max-width:820px}
.pl-ins{background:#f4effb;border-left:4px solid #6f31b8;border-radius:10px;padding:10px 14px;margin-bottom:14px;color:#3a2d52}
.pl-q{padding:14px 16px;margin:0 0 12px}.pl-qt{display:flex;gap:10px;align-items:flex-start;font-weight:700;margin-bottom:6px;line-height:1.5}
.pl-q .opt.on{background:#f3ecfc;border-color:#d8c6f2}
.pl-gap{display:inline-block;min-width:64px;border-bottom:2px solid #6f31b8;color:transparent;line-height:1}
.pl-play{margin-bottom:8px}.pl-play small{opacity:.75;font-weight:600}.pl-play.on{background:#6f31b8}
.pl-text h3{font:800 17px Outfit;margin:0 0 8px;color:#1e0a33}.pl-text p{margin:0 0 9px;line-height:1.65}
.pl-task p{margin:6px 0 0}.pl-ta{width:100%;min-height:260px;border:1px solid #d9d1e6;border-radius:14px;padding:14px;font:16px/1.6 'DM Sans',Arial;resize:vertical;box-sizing:border-box}
.pl-ta:focus{outline:3px solid #e6d8fa;border-color:#6f31b8}
.pl-spk{text-align:center;padding:22px}.pl-examiner{display:flex;align-items:center;gap:12px;justify-content:center;text-align:left}.pl-examiner small{display:block;color:var(--muted)}
.pl-spq{font:700 21px/1.4 Outfit;color:#1e0a33;margin:18px auto;max-width:600px}
.pl-mic{display:flex;align-items:center;gap:12px;max-width:420px;margin:0 auto}.pl-meter{flex:1;height:10px;background:#eee8f5;border-radius:10px;overflow:hidden}.pl-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,#16876a,#ffd84d,#e5483f);transition:width .08s}
.pl-rt{font:800 22px Outfit;color:#1e0a33;min-width:64px}.pl-live{min-height:48px;margin:12px auto;max-width:620px;background:#faf8fd;border-radius:10px;padding:8px 12px}
.pl-spk .pl-actions{justify-content:center}
.pl-confirm{max-width:460px}.pl-confirm h3{display:flex;gap:8px;align-items:center;margin:0 0 6px}
.pl-wait{text-align:center;padding:34px}.pl-wait h2{margin:12px 0 4px}.pl-bar{height:8px;border-radius:8px;background:#eee8f5;overflow:hidden;max-width:360px;margin:16px auto 0}.pl-bar i{display:block;height:100%;width:40%;background:#6f31b8;border-radius:8px;animation:plBar 1.1s ease-in-out infinite alternate}@keyframes plBar{from{margin-left:0}to{margin-left:60%}}
body.pl-run .ink-fab{display:none!important}
/* report */
.pl-report{display:grid;gap:14px}
.pl-hero{display:flex;gap:22px;align-items:center;background:linear-gradient(135deg,#1e0a33,#3a1466);color:#fff;border-radius:20px;padding:22px 24px}
.pl-hero h2{margin:6px 0 0;color:#fff;font:800 26px Outfit}.pl-hero .muted{color:#d9cdea!important;margin:2px 0 10px}.pl-hero .badge{background:#ffd84d;color:#1e0a33}
.pl-ring{flex:none;width:128px;height:128px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle,#2a0f47 58%,transparent 59%),conic-gradient(var(--c) 0 100%);box-shadow:0 0 0 6px #ffffff14}
.pl-ring b{font:800 40px/1 Outfit;color:#ffd84d}.pl-ring small{font:700 11px Outfit;letter-spacing:.5px;color:#fff;opacity:.9;margin-top:4px}
.pl-scale{position:relative;padding-top:22px;max-width:520px}.pl-scale-bar{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}
.pl-scale-bar span{background:var(--c);color:#fff;font:800 12px Outfit;text-align:center;padding:5px 2px;border-radius:6px}.pl-scale-bar small{display:block;font:600 9px 'DM Sans';opacity:.9}
.pl-marker{position:absolute;top:0;width:2px;height:62px;background:#ffd84d}.pl-marker b{position:absolute;top:-2px;left:6px;font:800 12px Outfit;color:#ffd84d;white-space:nowrap}
.pl-sk,.pl-cat{display:grid;grid-template-columns:150px 1fr 54px;gap:10px;align-items:center;margin:9px 0;font-weight:700}.pl-cat{grid-template-columns:200px 1fr 46px}
.pl-skbar{height:10px;background:#eee8f5;border-radius:10px;overflow:hidden}.pl-skbar i{display:block;height:100%;border-radius:10px;background:#6f31b8}
.pl-sk b,.pl-cat b{text-align:right;font:800 14px Outfit;color:#1e0a33}
.pl-good{border-top:4px solid #0d8a62}.pl-bad{border-top:4px solid #f0a020}.pl-report ul{margin:0;padding-left:18px}.pl-report li{margin:6px 0;line-height:1.45}
.pl-eq td,.pl-eq th{padding:7px 10px}
.pl-bottom{justify-content:center;margin:18px 0 6px}.pl-next{text-align:center}
.pl-ans{white-space:pre-wrap;background:#faf8fd;border-radius:10px;padding:10px 12px;margin-bottom:10px}
.pl-banner{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#1e0a33,#47197c);color:#fff;border-radius:18px;padding:14px 18px;margin:0 0 18px}
.pl-banner b{display:block;font:800 17px Outfit;color:#ffd84d}.pl-banner span{display:block;font-size:14px;opacity:.92}.pl-banner .btn{margin-left:auto;flex:none;background:#ffd84d;color:#1e0a33}
@media(max-width:640px){.pl-hero{flex-direction:column;text-align:center}.pl-scale{margin:0 auto}.pl-sk,.pl-cat{grid-template-columns:110px 1fr 46px;font-size:13px}.pl-banner{flex-wrap:wrap}.pl-banner .btn{margin:0;width:100%}.pl-spq{font-size:18px}}
@media print{.pl-hero{-webkit-print-color-adjust:exact;print-color-adjust:exact}.pl-scale-bar span,.pl-skbar i,.pl-ring,.pl-num{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* ===================== v15 · “Signature” certificates ===================== */
.sx{position:relative;display:grid;grid-template-columns:31% 1fr;width:1009px;height:680px;background:#fffdf9;color:#1d1530;font-family:'DM Sans',sans-serif;overflow:hidden;box-sizing:border-box}
.sx-side{position:relative;background:linear-gradient(165deg,#2b0f4a 0%,#1e0a33 55%,#140724 100%);color:#fff;display:flex;flex-direction:column;align-items:center;padding:34px 22px 24px;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}
.sx-side::after{content:"";position:absolute;right:0;top:0;bottom:0;width:6px;background:linear-gradient(var(--a),#d4a73a)}
.sx-pat{position:absolute;inset:0;width:100%;height:100%}
.sx-brand{position:relative;text-align:center}.sx-brand b{display:block;font:800 21px/1.05 Outfit,sans-serif;letter-spacing:.06em}.sx-brand small{display:block;margin-top:6px;font:700 10px Outfit,sans-serif;letter-spacing:.32em;color:#ffd84d}
.sx-eliot{position:relative;height:250px;margin:18px 0 6px;filter:drop-shadow(0 10px 16px #0007)}
.sx-emb{position:relative;width:132px;height:132px;display:grid;place-content:center;text-align:center;margin-top:auto}
.sx-emb svg{position:absolute;inset:0;width:100%;height:100%;filter:drop-shadow(0 6px 12px #0006)}
.sx-emb b{position:relative;font:800 38px/1 Outfit,sans-serif;color:#ffd84d;letter-spacing:.01em}.sx-emb b.long{font-size:22px}
.sx-emb small{position:relative;font:700 8.5px Outfit,sans-serif;letter-spacing:.24em;color:#fff;opacity:.85;margin-top:4px}
.sx-no{position:relative;margin-top:14px;font:600 10px 'DM Sans',sans-serif;letter-spacing:.12em;color:#cbbbe0}
.sx-main{position:relative;display:flex;flex-direction:column;padding:46px 58px 34px 52px}
.sx-main::before{content:"";position:absolute;inset:16px 16px 16px 0;border:1px solid #eadfc4;border-left:0;pointer-events:none}
.sx-kick{font:700 12px Outfit,sans-serif;letter-spacing:.34em;text-transform:uppercase;color:var(--a)}
.sx-title{font:800 34px/1.1 Outfit,sans-serif;color:#1e0a33;margin-top:8px;letter-spacing:-.01em}
.sx-rule{width:84px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--a),#d4a73a);margin:16px 0 18px}
.sx-pre{font:italic 500 19px 'Cormorant Garamond',Georgia,serif;color:#5b4d75}
.sx-name{font:italic 600 54px/1.1 'Cormorant Garamond',Georgia,serif;color:#1e0a33;margin:2px 0 8px;padding-bottom:6px;border-bottom:1.5px solid #e2d3a8}
.sx-text{font-size:14.5px;line-height:1.6;color:#2d2442;max-width:600px}
.sx-facts{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}.sx-facts div{min-width:104px;background:#fff;border:1px solid #ece4f5;border-top:3px solid var(--a);border-radius:10px;padding:7px 12px;box-shadow:0 8px 18px -14px #1e0a3355}
.sx-facts small{display:block;font:700 9px Outfit,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#7a6e8f}.sx-facts b{display:block;font:800 17px Outfit,sans-serif;color:#1e0a33;margin-top:2px}
.sx-foot{margin-top:auto;display:grid;grid-template-columns:1fr 1fr auto;gap:26px;align-items:end}
.sx-sign,.sx-date{display:flex;flex-direction:column}.sx-sign img{height:72px;width:auto;align-self:flex-start;margin-bottom:-10px}.sx-foot i{display:block;width:100%;max-width:220px;border-top:1.5px solid #1e0a33;margin:4px 0 5px}
.sx-sign b,.sx-date b{font:700 14px 'DM Sans',sans-serif}.sx-sign small,.sx-date small{font-size:11px;color:#6b6480}
.sx-verify{text-align:center;border:1px dashed #cdbfe2;border-radius:10px;padding:6px 10px}.sx-verify small{display:block;font:700 8.5px Outfit,sans-serif;letter-spacing:.2em;text-transform:uppercase;color:#7a6e8f}.sx-verify b{font:800 13px Outfit,sans-serif;letter-spacing:.08em;color:var(--a)}
.cscale .sx{width:1009px;height:680px}
/* gallery */
.sxg-cta{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#fff8e1,#f6efff);border:1px solid #eadff7;border-radius:16px;padding:14px 18px;margin-bottom:16px}.sxg-cta b{display:block;font:800 16px Outfit;color:#1e0a33}.sxg-cta .btn{margin-left:auto;flex:none}
.sxg-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:6px}
.seg{display:inline-flex;background:#f1ecf8;border-radius:12px;padding:3px;gap:2px}.seg button{border:0;background:none;font:700 13px Outfit;color:#5c4f73;padding:7px 12px;border-radius:9px;cursor:pointer}.seg button.on{background:#1e0a33;color:#ffd84d}
.sxg{margin:22px 0 8px}.sxg-h h3{display:flex;align-items:center;gap:8px;margin:0;font:800 19px Outfit;color:#1e0a33}.sxg-h p{margin:2px 0 8px}.sxg-h .badge.new{background:#ffd84d;color:#1e0a33}
.sxg-pick{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.cgrid.two{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:760px){.cgrid.two{grid-template-columns:1fr}}
.ccap{display:flex;align-items:center;gap:10px;padding:10px 12px;flex-wrap:wrap}.ccap b{font:800 13px Outfit;color:#1e0a33}.ccap .btn{margin-left:auto}
.sx-wm{position:absolute;right:46px;bottom:96px;font:800 230px/1 Outfit,sans-serif;color:var(--a);opacity:.055;letter-spacing:-.04em;pointer-events:none;white-space:nowrap;max-width:62%;overflow:hidden;text-align:right}
.sx-main{padding:54px 58px 34px 52px}.sx-title{font-size:38px}.sx-rule{margin:18px 0 22px}.sx-name{font-size:60px;margin:4px 0 12px}.sx-text{font-size:15.5px;line-height:1.65}.sx-facts{margin-top:26px;gap:12px}.sx-facts div{padding:9px 14px;min-width:112px}.sx-facts b{font-size:19px}
.sx-emb b.long{font-size:20px;letter-spacing:.04em}
.sx-wm.l{font-size:150px}.sx-wm.xl{font-size:104px;bottom:110px}

/* ===================== v16 · mobile layout (definitive — overrides earlier mobile rules) ===================== */
html,body{overscroll-behavior-y:auto}
@media (max-width:860px){
  .mobilehead{position:sticky!important;top:0;z-index:60!important}
  .scrim{z-index:80!important;-webkit-backdrop-filter:none;backdrop-filter:none}
  .side{position:fixed!important;top:0!important;bottom:auto!important;left:0!important;height:100vh!important;height:100dvh!important;max-height:100dvh!important;min-height:0!important;width:min(320px,86vw)!important;z-index:90!important;
    overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    padding:calc(14px + env(safe-area-inset-top,0px)) 14px calc(24px + env(safe-area-inset-bottom,0px))!important;
    transform:translateX(-105%);transition:transform .26s cubic-bezier(.2,.8,.2,1);box-shadow:none;will-change:transform}
  .menu-open .side{transform:none;box-shadow:12px 0 40px #0006}
  .drawer-close{display:block;position:absolute;right:10px;top:calc(10px + env(safe-area-inset-top,0px));z-index:2}
  html.menu-lock,html.menu-lock body{overflow:hidden!important;height:100%}
  .side .brandrow{padding-right:46px}
  .menu-open .ink-fab,.menu-open #inkFab{opacity:0!important;pointer-events:none}
  .ink-fab,#inkFab.ink-fab,#inkFab{bottom:calc(16px + env(safe-area-inset-bottom,0px))!important;right:calc(14px + env(safe-area-inset-right,0px))!important;transform:none!important;width:52px!important;height:52px!important}
  body.playing .ink-fab,body.playing #inkFab{bottom:calc(84px + env(safe-area-inset-bottom,0px))!important}
  .main{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))!important}
}
/* pull to refresh (installed app on iPhone/Android, where the browser has none) */
.ptr{position:fixed;left:50%;top:calc(6px + env(safe-area-inset-top,0px));z-index:95;width:40px;height:40px;margin-left:-20px;border-radius:50%;background:#fff;box-shadow:0 6px 18px #2b0f4a33;display:grid;place-items:center;transform:translateY(-60px);opacity:0;pointer-events:none}
.ptr i{width:20px;height:20px;border:3px solid #e6dcf4;border-top-color:#6f31b8;border-radius:50%}
.ptr.spin i{animation:ptrSpin .7s linear infinite}@keyframes ptrSpin{to{transform:rotate(360deg)}}
/* Signature certificate · softer panel (tone of the page headers), speech balloons, smaller Eliot */
.sx-side{background:linear-gradient(170deg,#45216f 0%,#3a1a5e 52%,#321650 100%)!important}
.sx-pat{position:absolute;inset:0;overflow:hidden}
.sx-pat i{position:absolute;display:block;border:1.3px solid #7b55a6;border-radius:50% 50% 50% 0;opacity:.55}
.sx-pat i.b{border-radius:0 50% 50% 50%}
.sx-eliot{height:178px!important;margin:26px 0 8px!important;filter:drop-shadow(0 8px 12px #0005)!important}
.sx-emb{width:120px!important;height:120px!important}.sx-emb b{font-size:34px}
.sx-brand b{font-size:20px}
.sx-sign img{height:90px!important;margin-bottom:-8px!important}
/* placement · teacher dashboard progress */
.pl-admincta{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#fff8e1,#f6efff)!important;border:1px solid #eadff7}.pl-admincta b{display:block;font:800 16px Outfit;color:#1e0a33}.pl-admincta span{display:block}.pl-admincta .btn{margin-left:auto;flex:none}
.pl-prog{display:flex;flex-direction:column;gap:4px}.pl-spark{display:block;max-width:100%}
.pl-steps2{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.pl-steps2 i{color:#a79bbb;font-style:normal}
.pl-lvchip{color:#fff;font:800 12px Outfit;border-radius:8px;padding:3px 8px}
.pl-prog small.up{color:#0d8a62;font-weight:700}.pl-prog small.down{color:#c2335a;font-weight:700}
.pl-acts{display:flex;flex-wrap:wrap;gap:6px}
@media(max-width:640px){.pl-admincta{flex-direction:column;text-align:center}.pl-admincta .btn{margin:0;width:100%}.pl-admintab td,.pl-admintab th{vertical-align:top}}

/* ===== v20 · performance dashboard ===== */
.dash .card h3{margin-top:0}
.dz-where{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:center}
.dz-donut{width:140px;height:140px;display:block}
.dz-ring{stroke:#ece6f5}
.dz-big{font:800 22px var(--font,inherit);fill:#3a1a5e}
.dz-exams{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:12px}
.dz-ex{margin:0}
.dz-exh{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.dz-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.dz-ctl{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.dz-month{width:auto;display:inline-block;padding:6px 10px;margin-left:6px}
.dz-grid2{display:grid;grid-template-columns:1fr 1.25fr;gap:14px}
.dz-grid2>.card{margin:0}
.dz-radar{width:100%;max-width:400px;display:block;margin:0 auto}
.dz-line{width:100%;display:block}
.dz-grid{fill:none;stroke:#e4dcef;stroke-width:1}
.dz-axis{stroke:#e4dcef;stroke-width:1}
.dz-tick{font-size:11px;fill:#8a7d9c}
.dz-lab{font-size:12.5px;font-weight:800;fill:#4a3d5c}
.dz-area{fill:rgba(106,79,201,.22);stroke:#4b1d7a;stroke-width:3;stroke-linejoin:round}
.dz-dot{fill:#ffd84d;stroke:#2b1145;stroke-width:3}
.dz-legend{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;margin-bottom:6px;font-size:13px}
.dz-legend.col{flex-direction:column;align-items:flex-start;justify-content:flex-start}
.dz-legend i,.dz-sw{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:6px;vertical-align:-1px}
.dz-tab td{padding:5px 4px}
.dz-bars{display:grid;gap:12px;margin:14px 0}
.dz-bar{display:grid;grid-template-columns:150px 1fr 40px;gap:10px;align-items:center;font-size:13px}
.dz-track{height:14px;border-radius:8px;background:#efe9f6;overflow:hidden}
.dz-track>div{height:100%;border-radius:8px}
.dz-time{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:center;margin-top:14px}
@media (max-width:860px){
  .dz-grid2{grid-template-columns:1fr}
  .dz-where,.dz-time{grid-template-columns:1fr;justify-items:center;text-align:center}
  .dz-bar{grid-template-columns:110px 1fr 34px}
  .dz-head .seg{overflow-x:auto;max-width:100%}
}
.seg button,.dz-head .seg button{font-family:inherit}
/* ---------- v20 · Professor Eliot AI feedback ---------- */
.ai-slot:empty{display:none}
.ai-slot{margin-top:10px}
.ai-cta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ai-wait{display:flex;gap:10px;align-items:center;padding:12px 14px;border-radius:14px;background:#f4effb;color:#3a1a5e;font-size:14px}
.ai-spin{width:18px;height:18px;border-radius:50%;border:3px solid #d9cdee;border-top-color:#5b2a86;animation:aispin .8s linear infinite;flex:none}
@keyframes aispin{to{transform:rotate(360deg)}}
.ai-box{border:1.5px solid #d9cdee;border-radius:18px;padding:16px 18px;background:linear-gradient(180deg,#fbf8ff,#fff);margin:4px 0 8px}
.ai-box h4{margin:16px 0 6px;color:#3a1a5e}
.ai-head{display:flex;gap:12px;align-items:center}
.ai-head img{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:none;background:#efe7fb}
.ai-band{font-weight:800;color:#5b2a86}
.ai-sum{margin:10px 0 6px;font-size:15px;line-height:1.55}
.ai-crit td{vertical-align:top}
.ai-sc{text-align:right;font-weight:800;font-size:18px;color:#3a1a5e;white-space:nowrap;width:56px}
.ai-err s{color:#b3263e;text-decoration-thickness:1.5px}
.ai-err td{vertical-align:top}
.ai-meters{display:grid;gap:8px}
.ai-meter{display:grid;grid-template-columns:190px 1fr 36px;gap:10px;align-items:center;font-size:13px}
.ai-track{height:12px;border-radius:8px;background:#efe9f6;overflow:hidden}
.ai-track>div{height:100%;border-radius:8px}
.ai-chips{display:flex;flex-wrap:wrap;gap:6px}
.ai-chip{background:#fff1f3;border:1px solid #f3c4cd;color:#8a1f33;border-radius:999px;padding:3px 10px;font-size:13px;font-weight:700}
.ai-chip i{font-style:normal;font-weight:600;opacity:.7;margin-left:4px}
.ai-rw{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ai-rw>div{background:#fff;border:1px solid var(--line,#e6def0);border-radius:12px;padding:10px 12px}
.ai-rw>div:last-child{border-color:#bfe3cf;background:#f5fbf7}
.ai-rw p{margin:6px 0 0;line-height:1.55}
.ai-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:end;margin:10px 0}
.ai-form label{display:flex;flex-direction:column;gap:4px}
.ai-form label:first-child{flex-direction:row;align-items:center;gap:8px}
.ai-quota .progress{margin-top:6px}
@media (max-width:860px){.ai-rw{grid-template-columns:1fr}.ai-meter{grid-template-columns:120px 1fr 32px}.ai-box{padding:14px}}
/* ===== v21 · platform: terms gate, access, admin cards, study plan ===== */
.sl-auto [data-go="#/admin/reviews"]{display:none!important}
.gate{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:28px 14px;background:radial-gradient(circle at 90% 0,#f1e5ff 0,transparent 40%),var(--bg)}
.gate-card{max-width:760px;width:100%}
.gate-head{display:flex;gap:14px;align-items:center}.gate-head img{border-radius:50%;flex:0 0 auto}
.gate-scroll{max-height:46vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:12px 16px;background:#fcfbfe}
.terms h3{font-size:15px;margin:14px 0 4px}.terms p{font-size:14px;margin:0 0 6px;line-height:1.55}
.gate-check{display:flex;gap:10px;align-items:flex-start;margin:12px 0 0;font-size:14px;cursor:pointer}.gate-check input{margin-top:4px;width:18px;height:18px;flex:0 0 auto;accent-color:#5b2a91}
.sl-access{margin-top:6px;font-weight:800;font-size:12px;background:#fff6df;color:#7a5200;border-radius:8px;padding:3px 8px;display:inline-block}.sl-access.warn{background:#fff0f4;color:var(--bad)}
.pl-wiz .pl-step{display:flex;gap:12px;margin:14px 0}.pl-n{flex:0 0 28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:14px}
.pl-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.pl-chip input{position:absolute;opacity:0;pointer-events:none}.pl-chip span{display:inline-block;border:1.5px solid var(--line);border-radius:999px;padding:6px 13px;font-weight:700;font-size:14px;cursor:pointer;background:#fff}.pl-chip input:checked+span{background:var(--ink);border-color:var(--ink);color:#fff}.pl-chip input:focus-visible+span{outline:2px solid #8a5cf6;outline-offset:2px}
.pl-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;flex:1}
.pl-legend{margin:10px 0}
.pl-week{background:#fff;border:1px solid var(--line);border-radius:14px;margin:10px 0;padding:0 12px}.pl-week.cur{border-color:#8a5cf6;box-shadow:0 0 0 2px #8a5cf622}
.pl-week summary{cursor:pointer;padding:12px 0;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.pl-wk-p{margin-left:auto;color:var(--muted)}
.pl-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding-bottom:12px}
.pl-day{background:#faf8fd;border-radius:10px;padding:8px;min-width:0}.pl-day.today{background:#f1e9ff;outline:2px solid #8a5cf6}.pl-day.rest{opacity:.55}
.pl-dh{font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-bottom:6px}.pl-dh span{color:var(--ink)}
.pl-item{position:relative;margin:0 0 6px}.pl-go{display:flex;gap:7px;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:9px;padding:7px 22px 7px 7px;font:inherit;cursor:pointer;color:inherit}.pl-go:hover{border-color:#8a5cf6}
.pl-chk{flex:0 0 18px;height:18px;border-radius:5px;border:2px solid #c9bedb;font-size:12px;font-weight:900;display:flex;align-items:center;justify-content:center;color:#fff;margin-top:2px}
.pl-item.ok .pl-chk{background:var(--ok);border-color:var(--ok)}.pl-item.ok b{text-decoration:line-through;opacity:.65}.pl-item.late .pl-go{border-color:#f0b8c8;background:#fff8fa}
.pl-txt{display:flex;flex-direction:column;min-width:0;font-size:13px;line-height:1.3}.pl-txt b{overflow-wrap:anywhere}
.pl-tag{font-size:10px;font-weight:800;letter-spacing:.3px;text-transform:uppercase;color:#5b2a91}.pl-tag.toefl{color:#0b6e8a}.pl-tag.sat{color:#9a4b00}.pl-tag.mock{color:var(--bad)}
.pl-x{position:absolute;top:3px;right:3px;border:0;background:transparent;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;padding:2px 5px}.pl-x:hover{color:var(--bad)}
.pl-home{margin-bottom:14px}.pl-home-h,.pl-home-empty{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.pl-home-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.pl-home-i>span{display:block;margin-bottom:2px}
@media (max-width:900px){.pl-cal{grid-template-columns:1fr}.pl-day.rest{display:none}.pl-day{display:block}}
@media print{.pl-week{break-inside:avoid}.pl-x{display:none}.pl-week:not([open]) .pl-cal{display:grid}}
/* v24 · phones: the sign-in card shows right away (compact header, Eliot beside the title) */
@media (max-width:820px){
 .auth .hero{min-height:0!important;position:relative;padding:calc(16px + env(safe-area-inset-top,0px)) 118px 18px 18px!important;justify-content:flex-start}
 .auth .hero img.auth-eliot{position:absolute!important;right:14px;top:calc(10px + env(safe-area-inset-top,0px));height:118px!important;margin:0!important;z-index:2}
 .auth .hero .eyebrow{font-size:10px;letter-spacing:.12em;margin:0 0 4px}
 .auth .hero h1{font-size:clamp(24px,6.8vw,30px)!important;line-height:1.12;margin:0!important}
 .auth .hero p,.auth .hero .chips{display:none!important}
 .auth{padding-top:0!important}
 .auth-box{padding:16px 12px calc(28px + env(safe-area-inset-bottom,0px))!important;align-items:flex-start}
 .auth-card{padding:20px 18px!important}
 .auth-card .seg{margin:12px 0}
}
@media (max-width:820px){.gate{padding:calc(14px + env(safe-area-inset-top,0px)) 10px calc(24px + env(safe-area-inset-bottom,0px))}.gate-card{padding:18px 16px!important}.gate-scroll{max-height:none!important;overflow:visible!important}}
.pl-wiz [hidden]{display:none!important}
/* v26 · Mercado Pago */
.sl-pay{background:#f6f1fd;border:1px solid #e1d3f6;border-radius:14px;padding:14px;margin:6px 0 4px}
.sl-pay-btns{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.sl-pay-btn{display:flex!important;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:12px 14px!important;font-weight:700}
.sl-pay-btn span{font-size:13px;opacity:.9}.sl-pay-btn b{font-size:20px}
.sl-pay-btn small{font-size:12px;font-weight:600;opacity:.85}.sl-pay-btn b small{font-size:13px;margin-left:2px}.sl-off{font-style:normal;background:#ffd84d;color:#3b1a66;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:800;margin-left:4px}
/* v29 · phone field with round flags */
.pf{position:relative}.pf-row{display:flex;gap:6px}.pf-btn{display:flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:0 10px;min-height:46px;font:inherit;font-weight:700;cursor:pointer;color:inherit;flex:0 0 auto}
.pf-btn:focus-visible{outline:2px solid #8a5cf6;outline-offset:1px}.pf-flag{width:22px;height:22px;border-radius:50%;flex:0 0 22px;box-shadow:0 0 0 1px #0000001a}.pf-caret{font-size:11px;opacity:.6}
.pf-area{flex:0 0 74px;width:74px;text-align:center}.pf-num{flex:1;min-width:0}
.pf-pop{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px #2a124030;padding:8px}
.pf-list{list-style:none;margin:6px 0 0;padding:0;max-height:260px;overflow:auto}.pf-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer}.pf-list li:hover,.pf-list li:focus,.pf-list li[aria-selected=true]{background:#f3ecfc;outline:none}
.pf-n{flex:1}.pf-d{color:var(--muted);font-weight:700;font-size:14px}.pf-none{color:var(--muted)}
