:root{--bg:#f4f6fa;--surface:#fff;--ink:#182433;--muted:#667382;--line:#e4e8ee;--primary:#206bc4;--primary-dark:#1a5aa5;--primary-soft:#e9f2ff;--danger:#d63939;--danger-soft:#fff0f0;--success:#2fb344;--success-soft:#eaf8ec;--shadow:0 1px 2px #1824330a,0 5px 18px #18243308}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.55 Inter,"Microsoft YaHei",system-ui,sans-serif}.app-shell{min-height:100vh}.sidebar{position:fixed;z-index:20;inset:0 auto 0 0;width:248px;background:#182433;color:#b9c3cf;padding:22px 14px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none;font-size:15px;font-weight:800;line-height:1.05;padding:5px 9px 27px}.brand small{font-size:11px;color:#91a1b4;font-weight:600;letter-spacing:.06em}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;color:#fff;background:linear-gradient(135deg,#4299ff,#206bc4);font-size:19px}.nav-caption{font-size:11px;letter-spacing:.11em;color:#78879a;font-weight:800;padding:0 10px 9px}.side-nav{display:grid;gap:3px}.side-nav a{display:flex;align-items:center;gap:12px;border-radius:7px;padding:10px;color:#b9c3cf;text-decoration:none;font-weight:650}.side-nav a span{font-size:18px;width:17px;text-align:center;color:#9babbd}.side-nav a:hover{color:#fff;background:#263648}.side-nav a.active{color:#fff;background:#206bc4}.side-nav a.active span{color:#fff}.sidebar-footer{margin-top:auto;border-top:1px solid #314255;padding:15px 9px 2px;display:flex;align-items:center;gap:9px;font-size:12px}.sidebar-footer b{display:block;color:#fff;font-size:13px}.sidebar-footer a{display:block;color:#9fb1c4;text-decoration:none;margin-top:2px}.avatar{display:grid;place-items:center;width:30px;height:30px;background:#8b5cf6;color:#fff;border-radius:50%;font-weight:800}.student-avatar{background:#2fb344}.app-main{margin-left:248px;min-height:100vh}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);padding:0 34px;display:flex;align-items:center;justify-content:space-between;gap:18px}.topbar h2{font-size:18px;margin:0}.eyebrow{margin:0 0 2px;color:var(--muted);font-size:12px;font-weight:700}.sidebar-toggle{display:none}.page-content{max-width:1460px;padding:28px 34px 54px;margin:auto}.button,button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--primary);border-radius:6px;background:var(--primary);color:#fff;text-decoration:none;font:700 14px/1.2 inherit;padding:9px 13px;cursor:pointer;white-space:nowrap;transition:.15s ease}.button:hover,button:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.button.secondary,button.secondary,.secondary{background:#fff;color:var(--primary);border-color:#bfd2ee}.button.secondary:hover,button.secondary:hover,.secondary:hover{background:var(--primary-soft);border-color:#9fc0ea}.button.small,button.small,.small{font-size:12px;padding:7px 9px;min-height:30px}.danger-button,.button.danger-outline{background:#fff;color:var(--danger);border-color:#f0babb}.danger-button:hover,.button.danger-outline:hover{background:var(--danger-soft);border-color:#e88484}.primary-action{box-shadow:0 2px 5px #206bc43a}.dashboard-intro{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:2px 0 22px}.dashboard-intro h1{font-size:28px;letter-spacing:-.03em;margin:2px 0 5px}.dashboard-intro .muted{margin:0}.intro-actions{display:flex;gap:9px;flex-wrap:wrap}.overview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric-card,.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px}.metric-card{padding:18px;display:flex;gap:13px;align-items:center}.metric-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:8px;background:var(--primary-soft);color:var(--primary);font-size:20px;font-weight:800}.metric-icon.violet{color:#7950f2;background:#f0ebff}.metric-icon.green{color:var(--success);background:var(--success-soft)}.metric-icon.orange{color:#e67700;background:#fff4d6}.metric-card small,.metric-card em{display:block;color:var(--muted);font-style:normal;font-size:12px}.metric-card strong{font-size:24px;letter-spacing:-.04em;line-height:1.1;display:block;margin:2px 0}.card{padding:21px 23px;margin:18px 0}.data-card{padding:0;overflow:hidden}.card-heading{padding:18px 21px 6px;display:flex;align-items:center;justify-content:space-between;gap:15px}.card-heading h2,.card h2{font-size:17px;margin:0}.card-heading p{font-size:13px;color:var(--muted);margin:3px 0 10px}.section-note,.muted{color:var(--muted)}.filter{display:flex;gap:10px;align-items:end;padding:4px 21px 17px}.filter label{margin:0;max-width:360px;flex:1}.filter button{height:38px}.table-scroll{overflow:auto;border-top:1px solid var(--line)}table{border-collapse:collapse;width:100%;min-width:620px}th,td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}th{background:#fafbfc;color:#52606d;font-size:12px;font-weight:800;letter-spacing:.02em;white-space:nowrap}table tr:not(:first-child):hover{background:#fbfdff}.data-card table tr:last-child td{border-bottom:0}.category-edit-form{display:flex;align-items:center;gap:6px}.category-edit-form input{width:122px;margin:0;padding:6px 8px}.action-cell{display:flex;gap:6px;flex-wrap:wrap;min-width:225px}.status{display:inline-flex;align-items:center;gap:5px;border-radius:99px;padding:3px 8px;font-weight:750;font-size:12px;white-space:nowrap}.status-ready,.status-live{background:var(--success-soft);color:#218738}.status-draft{background:#fff5db;color:#a96b00}.status-stopped{background:#f1f3f5;color:#606d7b}.empty-cell{text-align:center;color:var(--muted);padding:34px}.hero{padding:26px 0 17px;background:transparent;margin:0}.hero p{margin:0;color:var(--primary);font-weight:800;font-size:12px}.hero h1{margin:3px 0 7px;font-size:27px;letter-spacing:-.03em}.hero span{color:var(--muted)}.narrow{max-width:620px;margin:20px auto}.edit{max-width:850px;margin:18px auto}label{display:block;font-size:13px;font-weight:750;margin:14px 0;color:#394858}input,select,textarea{display:block;width:100%;font:inherit;padding:9px 10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:var(--ink);margin-top:5px;outline:0;transition:border .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:#78a9e5;box-shadow:0 0 0 3px #206bc422}textarea{min-height:130px}.choice{display:flex;align-items:flex-start;gap:9px;border:1px solid var(--line);border-radius:7px;padding:11px 13px;font-weight:500;margin:8px 0}.choice:hover{border-color:#9fc0ea;background:#f8fbff}.choice input{width:auto;margin:4px 0 0}.flash{border:1px solid #b7e1c0;background:var(--success-soft);color:#1f7d34;padding:10px 13px;border-radius:7px;margin:0 0 15px}.flash.error{border-color:#f3c3c3;background:var(--danger-soft);color:#b42318}.page-back{margin:0 0 16px}.page-back .button{margin-right:6px}.bottom-link{text-align:center;margin:25px}.bottom-link a{color:var(--primary);font-weight:700}dialog{border:0;border-radius:10px;box-shadow:0 18px 50px #18243342;color:var(--ink);width:min(540px,calc(100% - 28px))}dialog::backdrop{background:#18243370}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.right{border-left:4px solid var(--success)}.wrong{border-left:4px solid var(--danger)}.explanation{background:#f3f7fb;border-radius:6px;padding:12px}.submit{display:block;margin:24px auto}@media(max-width:980px){.sidebar{width:212px}.app-main{margin-left:212px}.page-content{padding:24px}.topbar{padding:0 24px}.overview-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.sidebar{transform:translateX(-100%);transition:transform .2s;width:248px;box-shadow:8px 0 24px #18243340}.sidebar-open .sidebar{transform:translateX(0)}.app-main{margin:0}.sidebar-toggle{display:inline-flex;width:34px;height:34px;padding:0;background:#fff;color:var(--ink);border-color:var(--line);font-size:18px}.topbar{height:68px;padding:0 16px;justify-content:flex-start}.topbar h2{font-size:16px}.topbar-actions{margin-left:auto}.topbar-actions .button{font-size:0;padding:9px}.topbar-actions .button:first-letter{font-size:16px}.page-content{padding:20px 14px 40px}.dashboard-intro{display:block}.dashboard-intro h1{font-size:25px}.intro-actions{margin-top:15px}.overview-grid{grid-template-columns:1fr 1fr;gap:10px}.metric-card{padding:13px;gap:9px}.metric-card strong{font-size:20px}.metric-icon{width:31px;height:31px;font-size:16px}.metric-card em{display:none}.card{padding:17px 15px}.data-card{padding:0}.card-heading{padding:15px 15px 5px}.filter{padding:4px 15px 13px;align-items:stretch;flex-direction:column}.filter label{max-width:none}.filter button{width:100%}.table-scroll{margin:0}th,td{padding:11px 12px}.hero{padding-top:5px}.hero h1{font-size:24px}.narrow{margin:8px 0}.dialog-actions{flex-wrap:wrap}.practice-hero{padding-top:5px}}
.student-welcome{min-height:calc(100vh - 150px);display:grid;grid-template-columns:minmax(0,1fr) 430px;align-items:center;gap:70px;max-width:1080px;margin:auto}.student-welcome h1{font-size:42px;line-height:1.16;letter-spacing:-.045em;margin:8px 0 14px}.student-welcome>div>p:not(.eyebrow){font-size:17px;color:var(--muted);max-width:500px}.student-points{display:grid;gap:9px;margin-top:28px;color:#445466;font-weight:650}.student-points span{display:flex;gap:8px}.student-points span::first-letter{color:var(--success)}.access-card{background:#fff;padding:26px 28px;border:1px solid var(--line);box-shadow:0 10px 35px #18243310;border-radius:10px}.access-card h2{margin:0;font-size:20px}.access-card p{margin:3px 0 18px;color:var(--muted)}.access-card .entry-note{margin:-7px 0 14px;padding:9px 11px;background:#edf6ff;border:1px solid #c9ddf6;border-radius:7px;color:#285d9c;font-size:13px;line-height:1.5}.access-card button{width:100%;margin-top:8px}.access-card small{display:block;margin-top:12px}.result-summary{display:flex;align-items:center;gap:22px;background:linear-gradient(135deg,#206bc4,#4299ff);color:#fff;padding:25px;border-radius:10px;box-shadow:0 9px 24px #206bc42d;margin-bottom:18px}.result-summary .eyebrow,.result-summary p{color:#e6f0ff}.result-summary h1{margin:3px 0;font-size:22px}.result-score{display:flex;align-items:baseline;justify-content:center;min-width:110px}.result-score span{font-size:52px;font-weight:850;letter-spacing:-.06em;line-height:1}.result-score small{font-size:20px;color:#cce0ff}.score-pill{display:inline-flex;color:#206bc4;background:#e9f2ff;padding:3px 8px;border-radius:99px;font-weight:800}@media(max-width:700px){.student-welcome{display:block;min-height:auto;padding:20px 0}.student-welcome h1{font-size:32px}.access-card{margin-top:30px;padding:21px}.result-summary{padding:20px;gap:15px}.result-score{min-width:78px}.result-score span{font-size:40px}.result-summary h1{font-size:18px}}

/* Keep the full course category readable in the teacher dashboard. */
.bank-table{min-width:980px}.bank-table th:first-child,.bank-table td:first-child{width:255px}.category-edit-form{min-width:220px;gap:7px}.category-edit-form input{width:190px;padding:7px 10px}


/* Competition centre */
.competition-hero{padding:7px 0 20px}.competition-hero h1{font-size:30px;margin:3px 0 8px;letter-spacing:-.035em}.competition-hero>p:last-child{margin:0;color:var(--muted);font-size:15px}.competition-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 20px}.level-filter{display:flex;gap:9px;flex-wrap:wrap;margin:0}.level-filter a{padding:8px 14px;border:1px solid #bfd2ee;border-radius:999px;background:#fff;color:var(--primary);text-decoration:none;font-weight:750}.level-filter a:hover,.level-filter a.active{background:var(--primary);border-color:var(--primary);color:#fff}.competition-records-link{margin-left:auto;white-space:nowrap}.competition-list{display:grid;gap:13px}.competition-card{padding:20px 22px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:9px;display:flex;align-items:center;justify-content:space-between;gap:18px}.competition-card.competition-completed{border-color:#a7ddb1;background:linear-gradient(90deg,#f7fff8,#fff)}.competition-card h2{font-size:18px;margin:2px 0 7px}.paper-session{margin:0;color:var(--primary);font-size:12px;font-weight:800}.paper-meta{margin:0;color:var(--muted)}.completion-note{display:flex;align-items:center;gap:8px;margin:10px 0 0;color:#557060;font-size:13px}.completion-note span{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;background:var(--success-soft);color:#218738;font-weight:800}.competition-entry{max-width:790px;margin:auto}.entry-paper{padding:24px 0 5px}.entry-paper h1{font-size:27px;margin:4px 0 7px}.entry-paper>p:last-child{margin:0;color:var(--muted)}.competition-access{max-width:480px;margin:22px 0 0}@media(max-width:700px){.competition-hero h1{font-size:26px}.competition-toolbar{align-items:stretch;flex-wrap:wrap}.competition-toolbar .level-filter{width:100%}.competition-records-link{width:100%;margin-left:0;text-align:center}.competition-card{display:block;padding:18px}.competition-card .button{width:100%;margin-top:0}.competition-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.level-filter{gap:7px}.level-filter a{padding:7px 11px;font-size:13px}.entry-paper h1{font-size:23px}}

.competition-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}@media(max-width:700px){.competition-actions{margin-top:16px}.competition-actions .button{margin-top:0}}


.download-prompt{max-width:1080px;margin:0 auto 22px;padding:20px 24px;border:1px solid #bfd2ee;border-radius:10px;background:linear-gradient(100deg,#f5f9ff,#fff);display:flex;align-items:center;justify-content:space-between;gap:20px}.download-prompt h2{margin:2px 0 5px;font-size:19px}.download-prompt p:last-child{margin:0;color:var(--muted)}.download-page{max-width:920px;margin:0 auto;padding:52px 24px 70px}.back-link{display:inline-block;color:var(--primary);font-weight:750;text-decoration:none;margin-bottom:36px}.download-hero h1{font-size:38px;letter-spacing:-.045em;margin:4px 0 8px}.download-hero>p:last-child{color:var(--muted);font-size:16px;margin:0}.download-card{margin-top:28px;padding:26px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:22px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.download-card-icon{display:grid;place-items:center;width:68px;height:68px;border-radius:14px;background:linear-gradient(135deg,#206bc4,#5298e8);color:#fff;font-size:19px;font-weight:850}.download-card h2{font-size:21px;margin:0}.download-card .muted{margin:4px 0 0}.download-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;margin:17px 0 0}.download-details div{min-width:0}.download-details .checksum{grid-column:1/-1}.download-details dt{font-size:12px;font-weight:800;color:var(--muted);margin-bottom:3px}.download-details dd{margin:0;font-weight:700}.download-details code{font:12px/1.5 Consolas,"Cascadia Code",monospace;overflow-wrap:anywhere}.download-button{align-self:center}.download-notice{margin-top:20px;padding:22px 25px;border:1px solid #ead49c;border-radius:10px;background:#fff9e9}.download-notice h2{font-size:16px;margin:0 0 10px}.download-notice ul{margin:0;padding-left:20px;color:#5e542f}.download-notice li+li{margin-top:7px}@media(max-width:700px){.download-prompt{display:block;padding:18px}.download-prompt .button{width:100%;margin-top:15px}.download-page{padding:30px 16px 48px}.download-hero h1{font-size:31px}.download-card{display:block;padding:21px}.download-card-icon{margin-bottom:17px}.download-details{grid-template-columns:1fr;margin-top:15px}.download-details .checksum{grid-column:auto}.download-button{width:100%;margin-top:20px}.download-notice{padding:19px}.download-notice ul{padding-left:18px}}

/* Keep attempt-limit controls on one compact line across daily practice, competition, and collection forms. */
.attempt-settings{display:inline-flex;align-items:center;gap:5px;margin:0;white-space:nowrap}.attempt-settings select,.attempt-settings input{display:inline-block;width:auto;margin:0;padding:7px 8px}.attempt-settings select{width:112px}.attempt-settings input{width:74px}.attempt-settings button{padding:7px 9px}.attempt-setting-field{display:flex;align-items:center;gap:5px;white-space:nowrap}.attempt-setting-field select,.attempt-setting-field input{display:inline-block;width:auto;margin:0}.attempt-setting-field select{width:112px}.attempt-setting-field input{width:74px}
