:root{font-family:Inter,system-ui,sans-serif;color:#172033;--p:#1456d9;--line:#e3e8f0;--muted:#667085}*{box-sizing:border-box}body{margin:0;background:#f6f8fb;line-height:1.55}.site-header,.exam-header{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(18px,calc((100vw - 1200px)/2));position:sticky;top:0;z-index:5}.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:inherit}.brand b{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--p);color:#fff}.brand small{display:block;color:var(--muted);font-size:11px}.site-header nav,.exam-meta,.actions{display:flex;align-items:center;gap:12px}.site-header nav a,.site-header nav button{border:0;background:none;color:var(--muted);font:inherit;text-decoration:none}.page-shell{width:min(1200px,calc(100% - 30px));margin:40px auto}.page-head h1,.auth-card h1{font-size:clamp(32px,5vw,48px);letter-spacing:-.04em;margin:.15em 0}.page-head p,.auth-card p{color:var(--muted)}.eyebrow{color:var(--p);font-size:12px;font-weight:800;letter-spacing:.15em}.metrics,.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin:24px 0}.metrics>div,.card,.auth-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 10px 34px #18274b0a}.metrics strong{display:block;font-size:32px}.metrics span{color:var(--muted)}.button{display:inline-flex;border:1px solid var(--line);border-radius:9px;padding:10px 14px;background:#fff;font-weight:700;cursor:pointer;text-decoration:none}.button.primary{background:var(--p);border-color:var(--p);color:#fff}.button.danger{background:#c73535;color:#fff}.button.small{padding:7px 10px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;min-width:650px}th,td{padding:13px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;color:var(--muted);text-transform:uppercase}.auth-card{width:min(440px,calc(100% - 30px));margin:8vh auto;padding:34px}.stack{display:grid;gap:15px}label{font-weight:650}input,textarea{display:block;width:100%;font:inherit;padding:11px;border:1px solid #cad2df;border-radius:9px;margin-top:5px}.alert{padding:12px;border-radius:9px}.alert.danger{background:#fff0f0;color:#8d2727}.alert.warning{background:#fff3d9;color:#835100}.two-col{display:grid;grid-template-columns:340px 1fr;gap:22px}.exam-mode{overflow:hidden;background:#fff}.exam-root{height:100dvh;display:grid;grid-template-rows:68px 1fr 54px}.exam-header{position:static;padding:0 14px}.save-state{position:fixed;right:14px;bottom:62px;background:#172033;color:#fff;border-radius:99px;padding:5px 11px;font-size:12px;z-index:9}.exam-split{display:grid;grid-template-columns:1fr 1fr;min-height:0}.passage-panel,.question-panel{overflow:auto;padding:24px}.passage-panel{background:#fafbfc;border-right:1px solid var(--line)}.question{padding:18px 0;border-bottom:1px solid var(--line);scroll-margin-top:10px}.question>div{display:flex;justify-content:space-between}.flag{border:0;background:none;color:var(--muted)}.flag.active{color:#9a5900}.exam-footer{display:flex;gap:5px;align-items:center;overflow:auto;padding:7px;border-top:1px solid var(--line)}.exam-footer a{min-width:32px;height:32px;border:1px solid var(--line);border-radius:7px;display:grid;place-items:center;text-decoration:none}.exam-single{overflow:auto;width:min(900px,100%);margin:auto;padding:20px}.audio-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:10px}.audio-card audio{width:100%}.writing-layout{display:grid;grid-template-columns:1fr 1fr;min-height:0}.writing-layout>aside,.writing-layout>section{overflow:auto;padding:22px}.writing-layout aside{background:#fafbfc;border-right:1px solid var(--line)}.writing-layout img{max-width:100%}.writing-editor{margin-bottom:22px}.writing-editor textarea{min-height:36vh}.mobile-tabs{display:none}
@media(max-width:760px){.two-col{grid-template-columns:1fr}.site-header nav a{display:none}.exam-header .brand span,#fullscreen{display:none}.exam-root:has(.exam-split){grid-template-rows:60px 44px 1fr 54px}.mobile-tabs{display:grid;grid-template-columns:1fr 1fr}.mobile-tabs button{border:0;background:#fff;padding:11px;font-weight:700}.mobile-tabs .active{color:var(--p);box-shadow:inset 0 -3px var(--p)}.exam-split{display:block}.exam-split>[data-pane]{height:100%}.exam-split>[data-pane=q]{display:none}.exam-split.show-q>[data-pane=p]{display:none}.exam-split.show-q>[data-pane=q]{display:block}.passage-panel,.question-panel{padding:17px}.writing-layout{display:block;overflow:auto}.writing-layout>aside,.writing-layout>section{overflow:visible;padding:17px}.exam-root:has(.writing-layout){overflow:auto;display:block;padding-top:60px;padding-bottom:54px}.exam-root:has(.writing-layout) .exam-header{position:fixed;inset:0 0 auto}.exam-root:has(.writing-layout) .exam-footer{position:fixed;inset:auto 0 0}.actions{flex-direction:column}}
.alert.success{background:#e9f8ef;color:#17663a}.help{font-size:13px;color:var(--muted)}
.builder-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:22px 0}.builder-card{padding:26px}.builder-summary{display:flex;flex-wrap:wrap;gap:16px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 22px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.pill{padding:6px 10px;border-radius:999px;background:#e8efff;color:#174bb8;font-size:12px;font-weight:800}.option{display:block;margin:8px 0}.passage-copy{line-height:1.75;white-space:normal}@media(max-width:800px){.builder-grid,.form-grid{grid-template-columns:1fr}}
.section-head{margin-top:30px}.table-sub{display:block;color:var(--muted);margin-top:4px}
.track-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:18px 0}.track-card{display:flex;gap:20px;align-items:center;padding:28px;border-radius:20px;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line);box-shadow:0 12px 30px rgba(18,38,72,.06);transition:.2s}.track-card:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(18,38,72,.11)}.track-card>span{display:grid;place-items:center;width:66px;height:66px;border-radius:18px;background:#e8efff;color:#1757d2;font-weight:900}.track-card.general>span{background:#e9f8ef;color:#147246}.track-card h2{margin:0 0 6px}.track-card p{margin:0;color:var(--muted)}.mode-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0 12px}.mode-tabs a{padding:10px 16px;border-radius:999px;border:1px solid var(--line);background:#fff;text-decoration:none;color:var(--ink);font-weight:700}.mode-tabs a.active{background:#1559df;color:#fff;border-color:#1559df}.module-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0 24px}.module-strip span{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;text-align:center;font-weight:700}.test-code{color:#1559df;white-space:nowrap}@media(max-width:800px){.track-grid{grid-template-columns:1fr}.module-strip{grid-template-columns:repeat(2,1fr)}}
.student-module-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:22px 0 34px}.student-module-grid>a{padding:24px;background:#fff;border:1px solid var(--line);border-radius:18px;text-decoration:none;color:var(--ink);box-shadow:0 10px 28px rgba(18,38,72,.05)}.student-module-grid span{font-size:28px}.student-module-grid h2{margin:12px 0 6px}.student-module-grid p{margin:0;color:var(--muted)}.test-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:18px 0 34px}.test-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 10px 28px rgba(18,38,72,.05)}.test-card h2,.test-card h3{line-height:1.3}.test-card form+form{margin-top:10px}.button.practice{background:#4e3f98;color:#fff;border-color:#4e3f98}.button.full{width:100%;text-align:center}.card-top,.catalog-filters{display:flex;justify-content:space-between;gap:12px;align-items:center}.catalog-filters{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;margin-bottom:20px}.empty-state{grid-column:1/-1;background:#fff;border:1px dashed var(--line);border-radius:18px;padding:40px;text-align:center}@media(max-width:900px){.student-module-grid,.test-card-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.student-module-grid,.test-card-grid{grid-template-columns:1fr}.catalog-filters{align-items:flex-start;flex-direction:column}}
.bulk-card{grid-column:1/-1}.bulk-card form{max-width:900px}
.reading-part-nav{position:sticky;bottom:0;z-index:15;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:8px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(18,38,72,.08)}.reading-part-nav section{border:1px solid var(--line);border-radius:8px;padding:7px;text-align:center}.reading-part-nav strong{display:block;margin-bottom:6px}.reading-part-nav em{font-weight:500}.part-numbers{display:flex;justify-content:center;flex-wrap:wrap;gap:4px}.part-numbers a,.part-numbers span{display:grid;place-items:center;width:25px;height:25px;border:1px solid #9aa8bc;border-radius:4px;text-decoration:none;font-size:12px;color:var(--ink);background:#fff}.part-numbers a:hover{background:#1559df;color:#fff;border-color:#1559df}.part-numbers span{background:#eef1f5;color:#9aa3b1;border-style:dashed}@media(max-width:760px){.reading-part-nav{position:static;grid-template-columns:1fr}.reading-part-nav section{text-align:left}.part-numbers{justify-content:flex-start}}
.reading-part-nav.four-parts{grid-template-columns:repeat(4,1fr)}.listening-part{margin-bottom:28px;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.listening-part .audio-card{border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0}.listening-part .question-panel{padding:18px}@media(max-width:900px){.reading-part-nav.four-parts{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.reading-part-nav.four-parts{grid-template-columns:1fr}}
.writing-test{min-height:0;overflow:hidden;display:grid;grid-template-rows:auto 1fr}.writing-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);background:#fff}.writing-tabs button{padding:12px 18px;border:0;border-bottom:3px solid transparent;background:#fff;text-align:left;cursor:pointer}.writing-tabs button.active{border-bottom-color:var(--p);background:#f4f7ff}.writing-tabs span{display:block;color:var(--muted);font-size:12px}.writing-parts{min-height:0}.writing-part{display:none;grid-template-columns:1fr 1fr;height:100%;min-height:0}.writing-part.active{display:grid}.writing-part>aside,.writing-part>main{padding:24px;overflow:auto}.writing-part>aside{background:#fafbfc;border-right:1px solid var(--line)}.writing-part img{display:block;max-width:100%;max-height:45vh;margin:20px auto}.writing-prompt{line-height:1.7}.task-guidance{padding:12px;background:#eef3ff;border-radius:10px}.writing-part .writing-editor textarea{min-height:58vh;resize:none}.word-status{display:flex;justify-content:space-between;color:var(--muted);font-size:13px;margin-top:8px}@media(max-width:760px){.writing-test{overflow:auto}.writing-part.active{display:block}.writing-part>aside,.writing-part>main{overflow:visible;padding:16px}.writing-part .writing-editor textarea{min-height:42vh}.writing-tabs button{padding:10px}}
.speaking-test{min-height:0;overflow:auto;padding:18px;background:#f8fafc}.speaking-parts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:900px;margin:0 auto 18px}.speaking-parts button{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:800;cursor:pointer}.speaking-parts button.active{background:var(--p);color:#fff}.speaking-prompts{max-width:900px;margin:auto}.speaking-prompt{display:none;background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;text-align:center}.speaking-prompt.active{display:block}.cue-card{text-align:left;background:#f4f7ff;border-radius:12px;padding:16px;margin:18px auto;max-width:650px}.recording-panel{border:1px solid var(--line);border-radius:16px;padding:24px;margin-top:20px}.mic-button{width:72px;height:72px;border:0;border-radius:50%;background:#0ca678;color:#fff;font-size:30px;cursor:pointer;margin:12px}.mic-button.recording{background:#d93636;animation:pulse 1.2s infinite}.record-time{font-size:28px;font-weight:800}.recording-panel audio{display:block;width:min(560px,100%);margin:12px auto}.speaking-nav{max-width:900px;margin:14px auto;display:flex;justify-content:space-between;align-items:center}@keyframes pulse{50%{transform:scale(1.08);box-shadow:0 0 0 12px #d9363620}}@media(max-width:600px){.speaking-prompt{padding:18px}.speaking-nav{gap:8px}.speaking-nav span{display:none}}
.button.trash-button{color:#a12b2b;border-color:#f0c7c7;background:#fff7f7}.button.trash-button:hover{background:#a12b2b;color:#fff}
.catalog-search{display:grid;grid-template-columns:2fr 1.4fr 1.2fr auto;gap:14px;align-items:end;margin:20px 0}.series-tabs,.pagination{display:flex;gap:8px;overflow:auto;margin:18px 0}.series-tabs a,.pagination a{white-space:nowrap;text-decoration:none;color:#172033;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 13px}.series-tabs a.active,.pagination a.active{background:var(--p);color:#fff}.series-intro{background:#eef3ff;border-radius:14px;padding:18px 22px;margin-bottom:18px}.series-intro h2,.series-intro p{margin:.2em 0}@media(max-width:850px){.catalog-search{grid-template-columns:1fr 1fr}}@media(max-width:560px){.catalog-search{grid-template-columns:1fr}}
.import-card{margin:22px 0}.import-form{display:grid;grid-template-columns:180px minmax(260px,1fr) auto;gap:14px;align-items:end}.extracted-card{margin:22px 0;border-color:#b9c9ee}.extracted-head,.import-actions{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.extracted-card textarea{font-family:inherit;line-height:1.55;background:#fbfcff}.import-actions{justify-content:flex-start;margin-top:14px}@media(max-width:800px){.import-form{grid-template-columns:1fr}.import-form .button{width:100%;justify-content:center}}
