2849 lines
51 KiB
CSS
2849 lines
51 KiB
CSS
/* ============================================================
|
|
WhalePrep — Modern Student-Friendly Educational Theme
|
|
Built for clarity, readability, and comfortable study sessions.
|
|
============================================================ */
|
|
|
|
:root {
|
|
--bg: #090d16;
|
|
--panel: #101728;
|
|
--card: #151f35;
|
|
--card-hover: #1b2845;
|
|
--input: #0e1524;
|
|
--border: #233352;
|
|
--border-focus: #3b82f6;
|
|
--border-subtle: #1c2942;
|
|
|
|
--text-main: #f8fafc;
|
|
--text-body: #cbd5e1;
|
|
--text-muted: #94a3b8;
|
|
--text-dim: #64748b;
|
|
|
|
--primary: #2563eb;
|
|
--primary-hover: #1d4ed8;
|
|
--primary-active: #1e40af;
|
|
--primary-glow: rgba(37, 99, 235, 0.25);
|
|
|
|
--cyan: #06b6d4;
|
|
--cyan-glow: rgba(6, 182, 212, 0.2);
|
|
|
|
--ok: #10b981;
|
|
--ok-bg: rgba(16, 185, 129, 0.15);
|
|
|
|
--amber: #f59e0b;
|
|
--amber-bg: rgba(245, 158, 11, 0.15);
|
|
|
|
--bad: #ef4444;
|
|
--bad-bg: rgba(239, 68, 68, 0.15);
|
|
|
|
--font-sans: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
|
|
--font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
|
|
--radius-sm: 6px;
|
|
--radius-md: 8px;
|
|
--radius-lg: 12px;
|
|
--radius-xl: 16px;
|
|
--radius-pill: 9999px;
|
|
|
|
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.25);
|
|
--shadow-md: 0 4px 12px -2px rgba(0, 0, 0, 0.35);
|
|
--shadow-lg: 0 10px 25px -5px rgba(0, 0, 0, 0.45);
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
html {
|
|
background: var(--bg);
|
|
color-scheme: dark;
|
|
}
|
|
|
|
body {
|
|
background: var(--bg);
|
|
color: var(--text-body);
|
|
font-family: var(--font-sans);
|
|
font-size: 15px;
|
|
line-height: 1.6;
|
|
max-width: 1240px;
|
|
margin: 0 auto;
|
|
padding: 0 20px 80px;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
a {
|
|
color: #38bdf8;
|
|
text-decoration: none;
|
|
transition: color 0.15s ease;
|
|
}
|
|
|
|
a:hover {
|
|
color: #7dd3fc;
|
|
text-decoration: none;
|
|
}
|
|
|
|
/* Headings */
|
|
h1 {
|
|
font-size: 2rem;
|
|
font-weight: 700;
|
|
letter-spacing: -0.025em;
|
|
color: var(--text-main);
|
|
line-height: 1.25;
|
|
margin: 20px 0 12px;
|
|
}
|
|
|
|
h2 {
|
|
font-size: 1.15rem;
|
|
font-weight: 600;
|
|
letter-spacing: -0.015em;
|
|
color: var(--text-main);
|
|
margin: 28px 0 14px;
|
|
}
|
|
|
|
h3 {
|
|
color: var(--text-main);
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
margin: 0 0 8px;
|
|
}
|
|
|
|
p {
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.meta {
|
|
color: var(--text-muted);
|
|
font-size: 0.9rem;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.dim {
|
|
color: var(--text-dim);
|
|
font-size: 0.825rem;
|
|
}
|
|
|
|
/* Topbar Header */
|
|
.topbar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
border-bottom: 1px solid var(--border);
|
|
padding: 16px 0;
|
|
position: sticky;
|
|
top: 0;
|
|
background: rgba(9, 13, 22, 0.92);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
z-index: 20;
|
|
}
|
|
|
|
.brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
color: var(--text-main);
|
|
font-weight: 700;
|
|
font-size: 1.15rem;
|
|
letter-spacing: -0.02em;
|
|
}
|
|
|
|
.brand span {
|
|
display: inline-block;
|
|
padding: 3px 8px;
|
|
border-radius: var(--radius-pill);
|
|
background: rgba(37, 99, 235, 0.15);
|
|
border: 1px solid rgba(37, 99, 235, 0.35);
|
|
color: #60a5fa;
|
|
font-weight: 500;
|
|
font-size: 0.725rem;
|
|
}
|
|
|
|
.nav {
|
|
display: flex;
|
|
gap: 16px;
|
|
align-items: center;
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.nav a.hidem {
|
|
color: var(--text-muted);
|
|
font-weight: 500;
|
|
padding: 6px 10px;
|
|
border-radius: var(--radius-md);
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.nav a.hidem:hover {
|
|
color: var(--text-main);
|
|
background: var(--panel);
|
|
}
|
|
|
|
/* Modern Buttons */
|
|
.btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 10px 18px;
|
|
background: var(--panel);
|
|
color: var(--text-body);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
text-decoration: none;
|
|
min-height: 42px;
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
.btn:hover:not(:disabled) {
|
|
background: var(--card-hover);
|
|
border-color: var(--border-focus);
|
|
color: var(--text-main);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.btn:active:not(:disabled) {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.btn:disabled {
|
|
opacity: 0.45;
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
}
|
|
|
|
.btn.primary {
|
|
background: var(--primary);
|
|
border-color: var(--primary);
|
|
color: #ffffff;
|
|
font-weight: 600;
|
|
box-shadow: 0 2px 8px rgba(37, 99, 235, 0.35);
|
|
}
|
|
|
|
.btn.primary:hover:not(:disabled) {
|
|
background: var(--primary-hover);
|
|
border-color: var(--primary-hover);
|
|
box-shadow: 0 4px 14px rgba(37, 99, 235, 0.45);
|
|
}
|
|
|
|
.btn.ok {
|
|
background: rgba(16, 185, 129, 0.15);
|
|
border-color: rgba(16, 185, 129, 0.4);
|
|
color: #34d399;
|
|
}
|
|
.btn.ok:hover:not(:disabled) {
|
|
background: var(--ok);
|
|
color: #ffffff;
|
|
}
|
|
|
|
.btn.danger {
|
|
background: rgba(239, 68, 68, 0.15);
|
|
border-color: rgba(239, 68, 68, 0.4);
|
|
color: #f87171;
|
|
}
|
|
.btn.danger:hover:not(:disabled) {
|
|
background: var(--bad);
|
|
color: #ffffff;
|
|
}
|
|
|
|
.btn.sm {
|
|
padding: 6px 12px;
|
|
font-size: 0.775rem;
|
|
min-height: 32px;
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
.btn.block {
|
|
display: flex;
|
|
width: 100%;
|
|
}
|
|
|
|
/* Cards & Surfaces */
|
|
.card {
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 20px;
|
|
box-shadow: var(--shadow-sm);
|
|
transition: border-color 0.15s ease;
|
|
}
|
|
|
|
.card:hover {
|
|
border-color: #334769;
|
|
}
|
|
|
|
.grid2 {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 16px;
|
|
}
|
|
|
|
.grid3 {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 16px;
|
|
}
|
|
|
|
.kv {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 14px;
|
|
margin: 18px 0;
|
|
}
|
|
|
|
.kv .card {
|
|
padding: 16px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
}
|
|
|
|
.kv .card b {
|
|
display: block;
|
|
font-size: 1.75rem;
|
|
font-weight: 700;
|
|
color: var(--text-main);
|
|
font-variant-numeric: tabular-nums;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
/* Status text tokens */
|
|
.ok-t { color: var(--ok); font-weight: 600; }
|
|
.bad-t { color: var(--bad); font-weight: 600; }
|
|
.warn-t { color: var(--amber); font-weight: 600; }
|
|
.cyan-t { color: var(--cyan); font-weight: 600; }
|
|
|
|
/* Progress segments */
|
|
.seg {
|
|
display: flex;
|
|
height: 8px;
|
|
border-radius: var(--radius-pill);
|
|
background: #1e293b;
|
|
overflow: hidden;
|
|
}
|
|
.seg i {
|
|
display: block;
|
|
height: 100%;
|
|
}
|
|
|
|
/* Focus indicator */
|
|
:focus-visible {
|
|
outline: 2px solid #38bdf8;
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
/* Tables */
|
|
table {
|
|
width: 100%;
|
|
border-collapse: separate;
|
|
border-spacing: 0;
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
th {
|
|
color: var(--text-muted);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
font-size: 0.725rem;
|
|
font-weight: 600;
|
|
text-align: left;
|
|
padding: 10px 12px;
|
|
border-bottom: 1px solid var(--border);
|
|
background: var(--panel);
|
|
}
|
|
|
|
td {
|
|
padding: 10px 12px;
|
|
border-bottom: 1px solid var(--border-subtle);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
|
|
/* Form Inputs */
|
|
input[type=text],
|
|
input[type=email],
|
|
input[type=number],
|
|
select,
|
|
textarea {
|
|
background: var(--input);
|
|
color: var(--text-main);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
padding: 11px 14px;
|
|
font-family: inherit;
|
|
font-size: 0.9rem;
|
|
outline: none;
|
|
width: 100%;
|
|
transition: all 0.15s ease;
|
|
min-height: 44px;
|
|
}
|
|
|
|
input:focus,
|
|
textarea:focus,
|
|
select:focus {
|
|
border-color: var(--border-focus);
|
|
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.2);
|
|
}
|
|
|
|
input::placeholder {
|
|
color: var(--text-dim);
|
|
}
|
|
|
|
label:not(.chapter-select-wrap):not(.subtopic-chip):not(.opt):not(.toggle-card) {
|
|
display: block;
|
|
font-size: 0.775rem;
|
|
font-weight: 600;
|
|
color: var(--text-muted);
|
|
margin: 12px 0 5px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.chapter-select-wrap,
|
|
.subtopic-chip,
|
|
.opt,
|
|
.toggle-card {
|
|
text-transform: none !important;
|
|
letter-spacing: normal !important;
|
|
margin: 0;
|
|
}
|
|
|
|
/* Footer */
|
|
footer {
|
|
margin-top: 56px;
|
|
border-top: 1px solid var(--border);
|
|
padding-top: 20px;
|
|
color: var(--text-dim);
|
|
font-size: 0.8rem;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
}
|
|
|
|
/* ============================================================
|
|
TOPIC SELECTION PAGE (/build) — Modern Student Friendly Revamp
|
|
============================================================ */
|
|
|
|
.build-header {
|
|
margin: 10px 0 24px;
|
|
}
|
|
|
|
.preset-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
margin-top: 14px;
|
|
padding: 12px 16px;
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
}
|
|
|
|
.preset-label {
|
|
font-size: 0.775rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
color: var(--text-dim);
|
|
margin-right: 4px;
|
|
}
|
|
|
|
.preset-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
padding: 6px 12px;
|
|
border-radius: var(--radius-pill);
|
|
font-size: 0.8rem;
|
|
font-weight: 500;
|
|
background: var(--card);
|
|
color: var(--text-body);
|
|
border: 1px solid var(--border);
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.preset-btn:hover {
|
|
background: var(--card-hover);
|
|
border-color: #38bdf8;
|
|
color: #ffffff;
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.preset-btn.secondary {
|
|
color: var(--text-dim);
|
|
background: transparent;
|
|
}
|
|
.preset-btn.secondary:hover {
|
|
color: #ef4444;
|
|
border-color: #ef4444;
|
|
}
|
|
|
|
/* Subject Filter Tabs */
|
|
.subject-tabs {
|
|
display: flex;
|
|
gap: 8px;
|
|
margin-bottom: 20px;
|
|
border-bottom: 1px solid var(--border);
|
|
padding-bottom: 8px;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.sub-tab {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 8px 16px;
|
|
border-radius: var(--radius-md);
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
background: transparent;
|
|
color: var(--text-muted);
|
|
border: none;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.sub-tab:hover {
|
|
color: var(--text-main);
|
|
background: var(--panel);
|
|
}
|
|
|
|
.sub-tab.active {
|
|
color: #ffffff;
|
|
background: var(--primary);
|
|
box-shadow: 0 2px 8px rgba(37, 99, 235, 0.35);
|
|
}
|
|
|
|
.tab-badge {
|
|
font-size: 0.725rem;
|
|
padding: 2px 6px;
|
|
border-radius: var(--radius-pill);
|
|
background: rgba(255, 255, 255, 0.15);
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Build Layout Grid */
|
|
.build-layout {
|
|
display: grid;
|
|
grid-template-columns: 1fr 340px;
|
|
gap: 24px;
|
|
align-items: start;
|
|
}
|
|
|
|
.picker-col {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 24px;
|
|
}
|
|
|
|
.subject-section {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.subject-header-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 4px;
|
|
padding: 0 4px;
|
|
}
|
|
|
|
.subject-title-badge {
|
|
font-size: 0.85rem;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
color: #38bdf8;
|
|
}
|
|
|
|
.btn-select-all-subject {
|
|
font-size: 0.775rem;
|
|
color: var(--text-dim);
|
|
background: transparent;
|
|
border: none;
|
|
cursor: pointer;
|
|
font-family: inherit;
|
|
font-weight: 500;
|
|
padding: 4px 8px;
|
|
border-radius: var(--radius-sm);
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.btn-select-all-subject:hover {
|
|
color: #ffffff;
|
|
background: var(--panel);
|
|
}
|
|
|
|
/* Chapter Card */
|
|
.chapter-card {
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.chapter-card:hover {
|
|
border-color: #3b82f6;
|
|
}
|
|
|
|
.chapter-card-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 14px 18px;
|
|
gap: 12px;
|
|
}
|
|
|
|
.chapter-select-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
flex: 1;
|
|
min-width: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.chapter-select-wrap input[type=checkbox] {
|
|
width: 18px;
|
|
height: 18px;
|
|
accent-color: var(--primary);
|
|
cursor: pointer;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.chapter-name {
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
color: var(--text-main);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.chapter-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.chapter-q-badge {
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
padding: 3px 8px;
|
|
border-radius: var(--radius-pill);
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.btn-expand-subtopics {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 6px 10px;
|
|
border-radius: var(--radius-md);
|
|
font-size: 0.775rem;
|
|
font-weight: 500;
|
|
background: var(--panel);
|
|
color: var(--text-muted);
|
|
border: 1px solid var(--border);
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.btn-expand-subtopics:hover {
|
|
background: var(--card-hover);
|
|
color: var(--text-main);
|
|
border-color: var(--border-focus);
|
|
}
|
|
|
|
.chevron-icon {
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.chapter-card.expanded .chevron-icon {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
/* Subtopics Drawer/Tray */
|
|
.subtopics-tray {
|
|
display: none;
|
|
background: var(--panel);
|
|
border-top: 1px solid var(--border);
|
|
padding: 14px 18px 18px;
|
|
}
|
|
|
|
.chapter-card.expanded .subtopics-tray {
|
|
display: block;
|
|
}
|
|
|
|
.subtopics-tray-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 12px;
|
|
font-size: 0.75rem;
|
|
}
|
|
|
|
.btn-sub-link {
|
|
color: #38bdf8;
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
font-size: 0.75rem;
|
|
font-family: inherit;
|
|
padding: 0;
|
|
}
|
|
.btn-sub-link:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.subtopics-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
gap: 8px;
|
|
}
|
|
|
|
.subtopic-chip {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 8px 12px;
|
|
border-radius: var(--radius-md);
|
|
background: var(--card);
|
|
border: 1px solid var(--border-subtle);
|
|
font-size: 0.825rem;
|
|
color: var(--text-body);
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.subtopic-chip:hover {
|
|
border-color: #3b82f6;
|
|
background: var(--card-hover);
|
|
color: #ffffff;
|
|
}
|
|
|
|
.subtopic-chip input[type=checkbox] {
|
|
width: 15px;
|
|
height: 15px;
|
|
accent-color: var(--primary);
|
|
cursor: pointer;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.subtopic-chip span {
|
|
flex: 1;
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* Settings Column */
|
|
.settings-sticky {
|
|
position: sticky;
|
|
top: 80px;
|
|
}
|
|
|
|
.settings-card {
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-xl);
|
|
padding: 22px;
|
|
box-shadow: var(--shadow-md);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 18px;
|
|
}
|
|
|
|
.settings-title {
|
|
font-size: 1.1rem;
|
|
font-weight: 700;
|
|
color: var(--text-main);
|
|
margin: 0;
|
|
padding-bottom: 10px;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.setting-group {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.setting-lbl {
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
color: var(--text-muted);
|
|
margin: 0;
|
|
}
|
|
|
|
/* Count Pills Selector */
|
|
.count-pills {
|
|
display: grid;
|
|
grid-template-columns: repeat(5, 1fr);
|
|
gap: 6px;
|
|
}
|
|
|
|
.count-pill {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 9px 4px;
|
|
border-radius: var(--radius-md);
|
|
font-size: 0.85rem;
|
|
font-weight: 600;
|
|
background: var(--panel);
|
|
color: var(--text-body);
|
|
border: 1px solid var(--border);
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.count-pill:hover {
|
|
background: var(--card-hover);
|
|
border-color: #38bdf8;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.count-pill.active {
|
|
background: var(--primary);
|
|
border-color: var(--primary);
|
|
color: #ffffff;
|
|
box-shadow: 0 2px 6px rgba(37, 99, 235, 0.4);
|
|
}
|
|
|
|
/* Toggle Switch Cards */
|
|
.toggle-card {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 12px;
|
|
padding: 12px 14px;
|
|
border-radius: var(--radius-lg);
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
cursor: pointer;
|
|
margin: 0;
|
|
text-transform: none;
|
|
letter-spacing: normal;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.toggle-card:hover {
|
|
border-color: #334769;
|
|
}
|
|
|
|
.toggle-card input[type=checkbox] {
|
|
width: 18px;
|
|
height: 18px;
|
|
accent-color: var(--primary);
|
|
margin-top: 2px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.toggle-card-content {
|
|
flex: 1;
|
|
}
|
|
|
|
.toggle-card-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.toggle-card-title b {
|
|
font-size: 0.875rem;
|
|
color: var(--text-main);
|
|
}
|
|
|
|
.badge-mode {
|
|
font-size: 0.675rem;
|
|
font-weight: 600;
|
|
padding: 2px 6px;
|
|
border-radius: var(--radius-pill);
|
|
background: rgba(16, 185, 129, 0.2);
|
|
color: #34d399;
|
|
}
|
|
|
|
.selection-summary {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 10px;
|
|
padding: 12px;
|
|
border-radius: var(--radius-md);
|
|
background: rgba(14, 21, 36, 0.6);
|
|
border: 1px solid var(--border-subtle);
|
|
}
|
|
|
|
.summary-stat {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.summary-stat b {
|
|
font-size: 0.875rem;
|
|
color: var(--text-main);
|
|
}
|
|
|
|
/* Large Create Paper Button */
|
|
.btn-create-paper {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 3px;
|
|
width: 100%;
|
|
padding: 14px 18px;
|
|
border-radius: var(--radius-lg);
|
|
background: #2563eb;
|
|
color: #ffffff;
|
|
border: none;
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
box-shadow: 0 4px 14px rgba(37, 99, 235, 0.45);
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.btn-create-paper:hover:not(:disabled) {
|
|
background: #1d4ed8;
|
|
box-shadow: 0 6px 20px rgba(37, 99, 235, 0.6);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.btn-create-paper:disabled {
|
|
opacity: 0.45;
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
color: var(--text-dim);
|
|
cursor: not-allowed;
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
|
|
.btn-subtext {
|
|
font-size: 0.75rem;
|
|
font-weight: 400;
|
|
opacity: 0.85;
|
|
}
|
|
|
|
/* ============================================================
|
|
EXAM CBT SCREEN & QUESTION TYPOGRAPHY
|
|
Strict font-size, weight and line-height normalization.
|
|
============================================================ */
|
|
|
|
.cbt {
|
|
display: grid;
|
|
grid-template-columns: 1fr 260px;
|
|
gap: 20px;
|
|
}
|
|
|
|
.exam-bar {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 25;
|
|
background: rgba(9, 13, 22, 0.95);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
border-bottom: 1px solid var(--border);
|
|
padding: 10px 0 0;
|
|
margin: 0 0 16px;
|
|
}
|
|
|
|
.exam-bar-inner {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 14px;
|
|
min-height: 48px;
|
|
}
|
|
|
|
.exam-title {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-width: 0;
|
|
}
|
|
|
|
.exam-title b {
|
|
color: var(--text-main);
|
|
font-size: 1.05rem;
|
|
font-weight: 700;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.exam-clock {
|
|
text-align: right;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.exam-progress {
|
|
height: 4px;
|
|
background: #1e293b;
|
|
border-radius: var(--radius-pill);
|
|
margin-top: 10px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.exam-progress i {
|
|
display: block;
|
|
height: 100%;
|
|
background: #38bdf8;
|
|
width: 0;
|
|
transition: width 0.25s ease;
|
|
}
|
|
|
|
.exam-bar.complete .exam-progress i {
|
|
background: var(--ok);
|
|
}
|
|
|
|
.timer {
|
|
font-family: var(--font-mono);
|
|
font-size: 1.3rem;
|
|
font-weight: 700;
|
|
color: var(--amber);
|
|
letter-spacing: 0.04em;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.timer.urgent {
|
|
color: #f97316;
|
|
}
|
|
|
|
.timer.critical {
|
|
color: var(--bad);
|
|
animation: timer-pulse 1s infinite alternate;
|
|
}
|
|
|
|
@keyframes timer-pulse {
|
|
from { opacity: 1; }
|
|
to { opacity: 0.55; }
|
|
}
|
|
|
|
.pane-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: baseline;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
font-size: 0.825rem;
|
|
border-bottom: 1px solid var(--border);
|
|
padding-bottom: 12px;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
/* Question Stem: Pure, Consistent Typography */
|
|
.stem {
|
|
font-size: 1.0625rem; /* 17px */
|
|
line-height: 1.7;
|
|
color: #f8fafc;
|
|
font-weight: 400;
|
|
margin: 14px 0 16px;
|
|
}
|
|
|
|
.stem,
|
|
.stem p,
|
|
.stem div,
|
|
.stem span {
|
|
font-size: 1.0625rem;
|
|
line-height: 1.7;
|
|
color: #f8fafc;
|
|
}
|
|
|
|
.stem p {
|
|
margin: 0 0 10px;
|
|
}
|
|
|
|
.stem p:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.stem b,
|
|
.stem strong {
|
|
font-weight: 600;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.stem h1,
|
|
.stem h2,
|
|
.stem h3,
|
|
.stem h4 {
|
|
font-size: 1.0625rem;
|
|
font-weight: 600;
|
|
color: #ffffff;
|
|
margin: 10px 0 6px;
|
|
}
|
|
|
|
.meta-line {
|
|
margin-bottom: 16px;
|
|
font-size: 0.825rem;
|
|
color: var(--text-dim);
|
|
}
|
|
|
|
/* KaTeX equations scaling */
|
|
.katex {
|
|
font-size: 1.08em;
|
|
text-rendering: auto;
|
|
}
|
|
|
|
/* Question type pill (right side of pane head) */
|
|
.qpill {
|
|
font-size: 0.75rem;
|
|
color: var(--text-dim);
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 3px 10px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* White typeset question card, mirrors the NTA CBT question block */
|
|
.qcard {
|
|
background: #ffffff;
|
|
color: #111827;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 20px 22px;
|
|
margin: 0 0 12px;
|
|
}
|
|
|
|
.qcard .stem,
|
|
.qcard .stem p,
|
|
.qcard .stem div,
|
|
.qcard .stem span {
|
|
color: #111827;
|
|
}
|
|
|
|
.qcard .stem {
|
|
margin: 0 0 12px;
|
|
}
|
|
|
|
.qcard p {
|
|
margin: 8px 0;
|
|
color: #111827;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
/* Question figures: local downloads in static/qimg (ZenithPrep .qimg style) */
|
|
.qcard img,
|
|
.stem img {
|
|
display: block;
|
|
max-width: 100%;
|
|
height: auto;
|
|
margin: 12px auto;
|
|
background: #ffffff;
|
|
border: 1px solid #e5e7eb;
|
|
border-radius: 8px;
|
|
padding: 8px;
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.qcard img,
|
|
.stem img {
|
|
cursor: zoom-in;
|
|
}
|
|
.qcard img.zoom,
|
|
.stem img.zoom {
|
|
max-width: none;
|
|
width: 220%;
|
|
cursor: zoom-out;
|
|
}
|
|
}
|
|
|
|
.qcard .katex {
|
|
color: #111827;
|
|
}
|
|
|
|
/* Multiple Choice Option Pills (compact: text lives inside the white card) */
|
|
.opt {
|
|
display: inline-flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 10px 16px;
|
|
margin: 6px 10px 6px 0;
|
|
font-size: 0.95rem;
|
|
color: #e2e8f0;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
min-height: 44px;
|
|
}
|
|
|
|
.opt:hover {
|
|
background: var(--card-hover);
|
|
border-color: #3b82f6;
|
|
}
|
|
|
|
.opt.sel {
|
|
background: rgba(37, 99, 235, 0.18);
|
|
border-color: #3b82f6;
|
|
color: #ffffff;
|
|
box-shadow: 0 0 0 1px #3b82f6;
|
|
}
|
|
|
|
.opt input[type=radio] {
|
|
width: 18px;
|
|
height: 18px;
|
|
accent-color: #2563eb;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.opt-letter {
|
|
font-weight: 700;
|
|
font-size: 0.9rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.opt.sel .opt-letter {
|
|
color: #ffffff;
|
|
}
|
|
|
|
/* Option-image questions still need room; pills with images go wide */
|
|
.opt:has(img) {
|
|
display: flex;
|
|
max-width: 100%;
|
|
}
|
|
|
|
.opt:has(img) img {
|
|
display: inline-block;
|
|
max-height: 120px;
|
|
max-width: 100%;
|
|
height: auto;
|
|
vertical-align: middle;
|
|
background: #ffffff;
|
|
border: 1px solid #e5e7eb;
|
|
border-radius: 6px;
|
|
padding: 4px;
|
|
margin: 2px 0;
|
|
}
|
|
|
|
/* Same for option text read out inside the white question card */
|
|
.qcard .opt-readout img {
|
|
display: inline-block;
|
|
max-height: 140px;
|
|
max-width: 100%;
|
|
vertical-align: middle;
|
|
margin: 4px 4px 4px 0;
|
|
}
|
|
|
|
.opt p {
|
|
display: inline;
|
|
margin: 0;
|
|
}
|
|
|
|
/* Exam action bar, mirrors the NTA CBT bottom strip */
|
|
.exam-actions {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
margin-top: 20px;
|
|
padding-top: 16px;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
|
|
.exam-actions-left,
|
|
.exam-actions-right {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.exam-actions .btn {
|
|
flex: 0 1 auto;
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
.exam-actions-left,
|
|
.exam-actions-right {
|
|
width: 100%;
|
|
}
|
|
.exam-actions .btn {
|
|
flex: 1 1 45%;
|
|
}
|
|
}
|
|
|
|
/* ZenithPrep-style action colors */
|
|
.btn.act-save {
|
|
background: #059669;
|
|
border-color: #059669;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.btn.act-save:hover {
|
|
background: #047857;
|
|
}
|
|
|
|
.btn.act-mark {
|
|
background: #d97706;
|
|
border-color: #d97706;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.btn.act-mark:hover {
|
|
background: #b45309;
|
|
}
|
|
|
|
.btn.act-review {
|
|
background: #7c3aed;
|
|
border-color: #7c3aed;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.btn.act-review:hover {
|
|
background: #6d28d9;
|
|
}
|
|
|
|
.btn.act-review.danger {
|
|
background: #581c87;
|
|
border-color: #8b5cf6;
|
|
}
|
|
|
|
/* Candidate + autosave indicator in the exam bar */
|
|
.exam-cand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
margin-left: auto;
|
|
margin-right: 18px;
|
|
font-size: 0.825rem;
|
|
}
|
|
|
|
#save-state {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 0.75rem;
|
|
color: #6ee7b7;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
#save-state::before {
|
|
content: "✓";
|
|
display: inline-grid;
|
|
place-items: center;
|
|
width: 16px;
|
|
height: 16px;
|
|
border-radius: 50%;
|
|
background: rgba(16, 185, 129, 0.18);
|
|
color: #10b981;
|
|
font-size: 0.65rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* Share box on the result page */
|
|
.card.share-box {
|
|
margin: 14px 0;
|
|
}
|
|
|
|
.share-row {
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.share-row code {
|
|
flex: 1 1 240px;
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-sm);
|
|
padding: 8px 10px;
|
|
font-size: 0.8rem;
|
|
color: #38bdf8;
|
|
}
|
|
|
|
/* Encouragement card under the overview stats */
|
|
.card.encourage {
|
|
margin: 14px 0;
|
|
border-left: 3px solid #10b981;
|
|
background: linear-gradient(135deg, rgba(16, 185, 129, 0.08), transparent 60%);
|
|
}
|
|
|
|
.card.encourage b {
|
|
display: block;
|
|
font-size: 1rem;
|
|
margin-bottom: 4px;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.card.encourage p {
|
|
margin: 0;
|
|
color: var(--text-dim);
|
|
font-size: 0.9rem;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* Result page: sticky left nav + main column (ZenithPrep style) */
|
|
.result-layout {
|
|
display: grid;
|
|
grid-template-columns: 230px 1fr;
|
|
gap: 20px;
|
|
align-items: start;
|
|
}
|
|
|
|
.result-nav {
|
|
position: sticky;
|
|
top: 76px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
padding: 14px;
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-xl);
|
|
}
|
|
|
|
.result-nav b {
|
|
font-size: 0.8rem;
|
|
color: var(--text-dim);
|
|
margin-bottom: 4px;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.result-nav .nav-meta {
|
|
font-size: 0.7rem;
|
|
color: var(--text-muted);
|
|
margin-bottom: 8px;
|
|
padding-bottom: 8px;
|
|
border-bottom: 1px solid var(--border);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.result-nav .nav-share {
|
|
margin-top: 8px;
|
|
padding-top: 8px;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
|
|
.result-nav .nav-share .share-box {
|
|
margin: 0;
|
|
}
|
|
|
|
.result-nav .nav-share .share-row code {
|
|
font-size: 0.65rem;
|
|
}
|
|
|
|
.result-nav a {
|
|
font-size: 0.875rem;
|
|
color: var(--text-muted);
|
|
text-decoration: none;
|
|
padding: 6px 8px;
|
|
border-radius: var(--radius-sm);
|
|
}
|
|
|
|
.result-nav a:hover {
|
|
background: var(--card-hover);
|
|
color: #ffffff;
|
|
}
|
|
|
|
.result-nav .btn {
|
|
margin-top: 6px;
|
|
text-align: center;
|
|
}
|
|
|
|
.result-nav .badge {
|
|
display: inline-block;
|
|
min-width: 18px;
|
|
padding: 1px 5px;
|
|
border-radius: 999px;
|
|
background: #7c3aed;
|
|
color: #ffffff;
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
text-align: center;
|
|
}
|
|
|
|
@media (max-width: 900px) {
|
|
.result-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.result-nav {
|
|
position: static;
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
}
|
|
.result-nav .btn {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
/* Palette Side Column */
|
|
.cbt-side {
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-xl);
|
|
padding: 18px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.cbt-side h2 {
|
|
font-size: 0.875rem;
|
|
margin-top: 0;
|
|
border-bottom: 1px solid var(--border);
|
|
padding-bottom: 8px;
|
|
}
|
|
|
|
.palette {
|
|
display: grid;
|
|
grid-template-columns: repeat(5, 1fr);
|
|
gap: 6px;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
/* Section header row inside the palette (MATHEMATICS · SECTION A) */
|
|
.pal-sechead {
|
|
grid-column: 1 / -1;
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
color: var(--text-muted);
|
|
margin: 10px 0 2px;
|
|
}
|
|
|
|
.pal-sechead:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.pal {
|
|
aspect-ratio: 1;
|
|
display: grid;
|
|
place-items: center;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-sm);
|
|
background: var(--panel);
|
|
color: var(--text-muted);
|
|
font-size: 0.825rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
min-height: 40px;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.pal:hover {
|
|
border-color: #38bdf8;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.pal.cur {
|
|
border-color: #38bdf8;
|
|
color: #ffffff;
|
|
box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.35);
|
|
}
|
|
|
|
.pal.ans {
|
|
background: #064e3b;
|
|
border-color: #10b981;
|
|
color: #6ee7b7;
|
|
}
|
|
|
|
.pal.rev {
|
|
background: #78350f;
|
|
border-color: #f59e0b;
|
|
color: #fde68a;
|
|
}
|
|
|
|
.pal.ansrev {
|
|
background: #4c1d95;
|
|
border-color: #8b5cf6;
|
|
color: #ddd6fe;
|
|
}
|
|
|
|
.pal.skip {
|
|
background: var(--panel);
|
|
}
|
|
|
|
/* Five-state legend counts above the palette grid */
|
|
.pal-stats {
|
|
list-style: none;
|
|
margin: 10px 0 4px;
|
|
padding: 0;
|
|
font-size: 0.75rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.pal-stats li {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 3px 0;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.pal-stats b {
|
|
font-weight: 700;
|
|
color: var(--text-dim);
|
|
}
|
|
|
|
.pal-stats .sw {
|
|
width: 10px;
|
|
height: 10px;
|
|
display: inline-block;
|
|
border-radius: 2px;
|
|
border: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.pal-stats .sw.visit {
|
|
background: #ffffff;
|
|
border-color: #9ca3af;
|
|
}
|
|
|
|
.pal-stats .sw.skip {
|
|
background: #b91c1c;
|
|
border-color: #ef4444;
|
|
}
|
|
|
|
.pal-stats .sw.ans {
|
|
background: #064e3b;
|
|
border-color: #10b981;
|
|
}
|
|
|
|
.pal-stats .sw.rev {
|
|
background: #78350f;
|
|
border-color: #f59e0b;
|
|
}
|
|
|
|
.pal-stats .sw.ansrev {
|
|
background: #4c1d95;
|
|
border-color: #8b5cf6;
|
|
}
|
|
|
|
/* Floating Palette Button (Mobile) */
|
|
button.pal-fab {
|
|
display: none;
|
|
}
|
|
|
|
.cbt-side [data-close-palette] {
|
|
display: none;
|
|
}
|
|
|
|
/* Per-Subject Timer Strips */
|
|
.subj-timer-bar {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
margin: 10px 0 6px;
|
|
}
|
|
|
|
.subj-timer {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 6px 14px;
|
|
background: var(--panel);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-pill);
|
|
font-size: 0.8rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.subj-timer b {
|
|
color: var(--text-main);
|
|
min-width: 5ch;
|
|
font-family: var(--font-mono);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.subj-timer.active {
|
|
border-color: #38bdf8;
|
|
background: rgba(56, 189, 248, 0.1);
|
|
color: #38bdf8;
|
|
}
|
|
|
|
.subj-timer.warn {
|
|
border-color: var(--amber);
|
|
color: var(--amber);
|
|
}
|
|
|
|
.subj-timer.done {
|
|
opacity: 0.4;
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
/* Mistake Tagging */
|
|
.mistake-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
flex-wrap: wrap;
|
|
margin-top: 12px;
|
|
padding-top: 12px;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
|
|
/* Sign-in */
|
|
.signin-primary {
|
|
max-width: 420px;
|
|
}
|
|
|
|
.signin-or {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
max-width: 420px;
|
|
margin: 18px 0 6px;
|
|
color: var(--text-dim);
|
|
font-size: 0.775rem;
|
|
}
|
|
|
|
.signin-or::before,
|
|
.signin-or::after {
|
|
content: "";
|
|
flex: 1;
|
|
height: 1px;
|
|
background: var(--border);
|
|
}
|
|
|
|
.signin-or span {
|
|
padding: 0 4px;
|
|
}
|
|
|
|
/* Bottom Navigation Bar for Mobile */
|
|
.tabbar {
|
|
display: none;
|
|
}
|
|
|
|
/* ============================================================
|
|
RESPONSIVE DESIGN (Tablets, Phones)
|
|
============================================================ */
|
|
|
|
@media (max-width: 1024px) {
|
|
.build-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.settings-sticky {
|
|
position: static;
|
|
}
|
|
.cbt {
|
|
grid-template-columns: 1fr;
|
|
padding-bottom: 76px;
|
|
}
|
|
.cbt-side {
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: var(--card);
|
|
border-top: 1px solid var(--border);
|
|
border-radius: var(--radius-xl) var(--radius-xl) 0 0;
|
|
padding: 16px 20px calc(76px + env(safe-area-inset-bottom));
|
|
max-height: 75vh;
|
|
overflow-y: auto;
|
|
transform: translateY(100%);
|
|
visibility: hidden;
|
|
transition: transform 0.25s ease, visibility 0.25s;
|
|
z-index: 35;
|
|
box-shadow: 0 -10px 30px rgba(0, 0, 0, 0.5);
|
|
}
|
|
.cbt-side.open {
|
|
transform: translateY(0);
|
|
visibility: visible;
|
|
}
|
|
.cbt-side [data-close-palette] {
|
|
display: block;
|
|
}
|
|
button.pal-fab {
|
|
display: flex;
|
|
align-items: center;
|
|
position: fixed;
|
|
right: 16px;
|
|
bottom: calc(64px + env(safe-area-inset-bottom));
|
|
z-index: 25;
|
|
min-height: 46px;
|
|
padding: 10px 18px;
|
|
border-radius: var(--radius-pill);
|
|
background: var(--card);
|
|
border: 1px solid #38bdf8;
|
|
color: #38bdf8;
|
|
font-weight: 600;
|
|
box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
|
|
}
|
|
button.pal-fab[aria-expanded=true] {
|
|
display: none;
|
|
}
|
|
.palette {
|
|
grid-template-columns: repeat(7, 1fr);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 700px) {
|
|
body {
|
|
padding: 0 14px 72px;
|
|
font-size: 14.5px;
|
|
}
|
|
h1 { font-size: 1.6rem; }
|
|
h2 { font-size: 1.05rem; }
|
|
.grid2, .grid3 {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.kv {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
.nav a.hidem {
|
|
display: none;
|
|
}
|
|
.brand span {
|
|
display: none;
|
|
}
|
|
.tabbar {
|
|
display: grid;
|
|
grid-auto-flow: column;
|
|
grid-auto-columns: 1fr;
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
z-index: 30;
|
|
background: rgba(16, 23, 40, 0.95);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
border-top: 1px solid var(--border);
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
}
|
|
.tabbar a {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 52px;
|
|
padding: 6px 4px;
|
|
font-size: 0.775rem;
|
|
font-weight: 600;
|
|
color: var(--text-muted);
|
|
border-right: 1px solid var(--border-subtle);
|
|
}
|
|
.tabbar a:last-child {
|
|
border-right: none;
|
|
}
|
|
.tabbar a:active, .tabbar a.active {
|
|
color: #ffffff;
|
|
background: rgba(37, 99, 235, 0.2);
|
|
}
|
|
body.exam {
|
|
padding-bottom: calc(120px + env(safe-area-inset-bottom));
|
|
}
|
|
.palette {
|
|
grid-template-columns: repeat(5, 1fr);
|
|
gap: 8px;
|
|
}
|
|
.pal {
|
|
min-height: 46px;
|
|
}
|
|
.table-wrap {
|
|
overflow-x: auto;
|
|
-webkit-overflow-scrolling: touch;
|
|
margin: 0 -14px;
|
|
padding: 0 14px;
|
|
}
|
|
}
|
|
|
|
/* ============================================================
|
|
PRINT / PDF STYLESHEET
|
|
Clean black-on-white layout, no interactive chrome.
|
|
============================================================ */
|
|
|
|
@media print {
|
|
.topbar, .tabbar, footer, .exam-bar, .cbt-side, .opt-actions,
|
|
.mistake-row, .pal-fab, #pal-toggle, form button, .btn, .subj-timer-bar,
|
|
.exam-progress, .cbt-count, .pal-stats, .legend, script, .preset-bar, .subject-tabs,
|
|
.settings-col, .chapter-actions, .subtopics-tray-head {
|
|
display: none !important;
|
|
}
|
|
body {
|
|
background: #ffffff !important;
|
|
color: #000000 !important;
|
|
padding: 0 !important;
|
|
font-size: 11pt !important;
|
|
}
|
|
.card, .qpane, details.card, .chapter-card {
|
|
background: #ffffff !important;
|
|
color: #000000 !important;
|
|
border: 1px solid #cccccc !important;
|
|
box-shadow: none !important;
|
|
border-radius: 0 !important;
|
|
break-inside: avoid;
|
|
margin-bottom: 18px !important;
|
|
}
|
|
.opt, .opt.sel, .chk, input[type=text], select, textarea {
|
|
background: #ffffff !important;
|
|
color: #000000 !important;
|
|
border: 1px solid #cccccc !important;
|
|
box-shadow: none !important;
|
|
border-radius: 0 !important;
|
|
}
|
|
.qpane, .qpane[hidden] {
|
|
display: block !important;
|
|
}
|
|
.stem, .stem p, .stem span, p, span, div, h1, h2, h3 {
|
|
color: #000000 !important;
|
|
}
|
|
.dim, .meta {
|
|
color: #555555 !important;
|
|
}
|
|
.opt-letter {
|
|
background: #eeeeee !important;
|
|
color: #000000 !important;
|
|
border: 1px solid #999999 !important;
|
|
}
|
|
@page {
|
|
margin: 15mm;
|
|
}
|
|
}
|
|
|
|
/* ============================================================
|
|
ZENITHPREP UI REPLICA STYLES
|
|
============================================================ */
|
|
|
|
.zp-builder-page {
|
|
max-width: 900px;
|
|
margin: 0 auto;
|
|
padding: 10px 0 60px;
|
|
}
|
|
|
|
.zp-page-title {
|
|
font-size: 2.1rem;
|
|
font-weight: 700;
|
|
letter-spacing: -0.03em;
|
|
color: #ffffff;
|
|
margin: 14px 0 8px;
|
|
}
|
|
|
|
.zp-page-subtitle {
|
|
color: #94a3b8;
|
|
font-size: 0.95rem;
|
|
line-height: 1.55;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
/* Top Mode Cards */
|
|
.zp-mode-cards {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 14px;
|
|
margin-bottom: 22px;
|
|
}
|
|
|
|
.zp-mode-card {
|
|
background: #131b32;
|
|
border: 1px solid #24355a;
|
|
border-radius: 12px;
|
|
padding: 16px 18px;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.zp-mode-card:hover {
|
|
background: #182342;
|
|
border-color: #38bdf8;
|
|
}
|
|
|
|
.zp-mode-card.active {
|
|
background: #16254a;
|
|
border: 2px solid #3b82f6;
|
|
box-shadow: 0 4px 16px rgba(37, 99, 235, 0.25);
|
|
}
|
|
|
|
.zp-mode-title {
|
|
display: block;
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
color: #ffffff;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.zp-mode-card.active .zp-mode-title {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
.zp-mode-desc {
|
|
font-size: 0.825rem;
|
|
color: #94a3b8;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
/* Complete Syllabus Section */
|
|
.zp-syllabus-section {
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.zp-btn-syllabus {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
background: #172344;
|
|
border: 1px solid #2e4478;
|
|
border-radius: 10px;
|
|
padding: 10px 18px;
|
|
color: #93c5fd;
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.zp-btn-syllabus:hover {
|
|
background: #1d2c54;
|
|
border-color: #60a5fa;
|
|
color: #ffffff;
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.zp-book-icon {
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.zp-syllabus-desc {
|
|
color: #94a3b8;
|
|
font-size: 0.85rem;
|
|
margin-top: 8px;
|
|
line-height: 1.45;
|
|
}
|
|
|
|
/* Subject Filter Pills Bar */
|
|
.zp-subject-pills-bar {
|
|
display: flex;
|
|
gap: 12px;
|
|
margin-bottom: 18px;
|
|
overflow-x: auto;
|
|
padding-bottom: 4px;
|
|
}
|
|
|
|
.zp-subj-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
background: #131b32;
|
|
border: 1px solid #233357;
|
|
border-radius: 10px;
|
|
padding: 9px 16px;
|
|
color: #cbd5e1;
|
|
font-size: 0.925rem;
|
|
font-weight: 600;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.zp-subj-pill:hover {
|
|
background: #182342;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.zp-subj-pill.active {
|
|
background: #1d2b52;
|
|
border-color: #3b82f6;
|
|
color: #ffffff;
|
|
box-shadow: 0 2px 8px rgba(37, 99, 235, 0.3);
|
|
}
|
|
|
|
.zp-dot {
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
flex-shrink: 0;
|
|
}
|
|
.dot-math { background: #c084fc; box-shadow: 0 0 8px rgba(192, 132, 252, 0.6); }
|
|
.dot-phy { background: #22d3ee; box-shadow: 0 0 8px rgba(34, 211, 238, 0.6); }
|
|
.dot-chem { background: #fb923c; box-shadow: 0 0 8px rgba(251, 146, 60, 0.6); }
|
|
|
|
.zp-subj-badge {
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
padding: 2px 7px;
|
|
border-radius: var(--radius-pill);
|
|
background: rgba(255, 255, 255, 0.12);
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
/* Search and Action Bar */
|
|
.zp-search-row {
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.zp-search-input-wrap {
|
|
position: relative;
|
|
flex: 1;
|
|
}
|
|
|
|
.zp-search-icon {
|
|
position: absolute;
|
|
left: 12px;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
color: #64748b;
|
|
pointer-events: none;
|
|
}
|
|
|
|
#zp-search-input {
|
|
background: #10172c;
|
|
border: 1px solid #202d4b;
|
|
border-radius: 8px;
|
|
padding: 10px 14px 10px 38px;
|
|
font-size: 0.875rem;
|
|
color: #ffffff;
|
|
min-height: 40px;
|
|
width: 100%;
|
|
}
|
|
#zp-search-input:focus {
|
|
border-color: #38bdf8;
|
|
box-shadow: 0 0 0 2px rgba(56, 189, 248, 0.2);
|
|
}
|
|
|
|
.zp-search-actions {
|
|
display: flex;
|
|
gap: 8px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.zp-btn-action {
|
|
background: #141c33;
|
|
border: 1px solid #24355a;
|
|
border-radius: 8px;
|
|
padding: 8px 14px;
|
|
color: #cbd5e1;
|
|
font-size: 0.825rem;
|
|
font-weight: 600;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.zp-btn-action:hover {
|
|
background: #1a2544;
|
|
color: #ffffff;
|
|
border-color: #38bdf8;
|
|
}
|
|
|
|
/* Chapter List Container (ZenithPrep Table Style) */
|
|
.zp-chapters-container {
|
|
background: #11182d;
|
|
border: 1px solid #1f2c4a;
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.zp-chapter-item {
|
|
border-bottom: 1px solid #1a243f;
|
|
}
|
|
.zp-chapter-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.zp-chapter-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 14px 18px;
|
|
transition: background 0.15s ease;
|
|
}
|
|
|
|
.zp-chapter-row:hover {
|
|
background: #151f38;
|
|
}
|
|
|
|
.zp-chk-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 14px;
|
|
flex: 1;
|
|
cursor: pointer;
|
|
text-transform: none;
|
|
letter-spacing: normal;
|
|
margin: 0;
|
|
}
|
|
|
|
.zp-chk-wrap input[type=checkbox] {
|
|
width: 19px;
|
|
height: 19px;
|
|
accent-color: #2563eb;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.zp-chapter-title {
|
|
font-size: 0.95rem;
|
|
font-weight: 600;
|
|
color: #f8fafc;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.zp-expand-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: 6px;
|
|
background: transparent;
|
|
border: none;
|
|
color: #64748b;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.zp-expand-btn:hover {
|
|
color: #38bdf8;
|
|
background: #17223e;
|
|
}
|
|
|
|
.zp-caret-icon {
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.zp-chapter-item.expanded .zp-caret-icon {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
/* Subtopics Drawer */
|
|
.zp-subtopics-tray {
|
|
display: none;
|
|
background: #0d1324;
|
|
border-top: 1px solid #19243e;
|
|
padding: 12px 18px 16px 48px;
|
|
}
|
|
|
|
.zp-chapter-item.expanded .zp-subtopics-tray {
|
|
display: block;
|
|
}
|
|
|
|
.zp-subtopics-tray-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 10px;
|
|
font-size: 0.775rem;
|
|
}
|
|
|
|
.zp-link-btn {
|
|
color: #38bdf8;
|
|
background: none;
|
|
border: none;
|
|
font-size: 0.75rem;
|
|
font-family: inherit;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
padding: 0;
|
|
}
|
|
.zp-link-btn:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.zp-subtopics-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
}
|
|
|
|
.zp-subtopic-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 6px 0;
|
|
cursor: pointer;
|
|
font-size: 0.85rem;
|
|
color: #cbd5e1;
|
|
text-transform: none;
|
|
letter-spacing: normal;
|
|
margin: 0;
|
|
}
|
|
|
|
.zp-subtopic-row:hover {
|
|
color: #ffffff;
|
|
}
|
|
|
|
.zp-subtopic-row input[type=checkbox] {
|
|
width: 15px;
|
|
height: 15px;
|
|
accent-color: #2563eb;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* ============================================================
|
|
BOTTOM FILTER CARD (DIFFICULTY & YEARS) — Exact Zenith Replica
|
|
============================================================ */
|
|
|
|
.zp-filter-box {
|
|
background: #11182d;
|
|
border: 1px solid #202e4d;
|
|
border-radius: 14px;
|
|
padding: 20px 22px;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.zp-filter-sec {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.zp-filter-heading {
|
|
font-size: 0.75rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
color: #64748b;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.zp-pill-row {
|
|
display: flex;
|
|
gap: 10px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.zp-filter-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 7px 16px;
|
|
border-radius: 20px;
|
|
background: #141c33;
|
|
border: 1px solid #25365c;
|
|
color: #94a3b8;
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
user-select: none;
|
|
}
|
|
|
|
.zp-filter-pill:hover {
|
|
border-color: #38bdf8;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.zp-filter-pill input {
|
|
display: none;
|
|
}
|
|
|
|
.zp-filter-pill.active {
|
|
background: #1c2c54;
|
|
border-color: #3b82f6;
|
|
color: #ffffff;
|
|
box-shadow: 0 2px 8px rgba(37, 99, 235, 0.25);
|
|
}
|
|
|
|
.zp-pill-tick {
|
|
font-size: 0.75rem;
|
|
color: #60a5fa;
|
|
font-weight: 700;
|
|
}
|
|
|
|
/* Settings Bar */
|
|
.zp-settings-bar {
|
|
background: #11182d;
|
|
border: 1px solid #202e4d;
|
|
border-radius: 14px;
|
|
padding: 20px 22px;
|
|
}
|
|
|
|
.zp-settings-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
flex-wrap: wrap;
|
|
margin-bottom: 20px;
|
|
padding-bottom: 18px;
|
|
border-bottom: 1px solid #1a2542;
|
|
}
|
|
|
|
.zp-setting-item {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.zp-setting-label {
|
|
font-size: 0.75rem;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.06em;
|
|
color: #64748b;
|
|
margin: 0;
|
|
}
|
|
|
|
.zp-count-pills {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
|
|
.zp-cnt-btn {
|
|
padding: 8px 14px;
|
|
border-radius: 8px;
|
|
background: #141c33;
|
|
border: 1px solid #24355a;
|
|
color: #cbd5e1;
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: all 0.15s ease;
|
|
}
|
|
|
|
.zp-cnt-btn:hover {
|
|
border-color: #38bdf8;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.zp-cnt-btn.active {
|
|
background: #2563eb;
|
|
border-color: #2563eb;
|
|
color: #ffffff;
|
|
box-shadow: 0 2px 8px rgba(37, 99, 235, 0.35);
|
|
}
|
|
|
|
.zp-toggle-label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
font-size: 0.85rem;
|
|
color: #cbd5e1;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
text-transform: none;
|
|
letter-spacing: normal;
|
|
}
|
|
|
|
.zp-toggle-label input[type=checkbox] {
|
|
width: 17px;
|
|
height: 17px;
|
|
accent-color: #2563eb;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.zp-submit-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 18px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.zp-summary-text {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.zp-summary-text b {
|
|
font-size: 1rem;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.zp-btn-start {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 12px 28px;
|
|
border-radius: 10px;
|
|
background: #2563eb;
|
|
border: none;
|
|
color: #ffffff;
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
font-family: inherit;
|
|
cursor: pointer;
|
|
box-shadow: 0 4px 14px rgba(37, 99, 235, 0.45);
|
|
transition: all 0.15s ease;
|
|
min-width: 220px;
|
|
}
|
|
|
|
.zp-btn-start:hover:not(:disabled) {
|
|
background: #1d4ed8;
|
|
box-shadow: 0 6px 20px rgba(37, 99, 235, 0.6);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.zp-btn-start:disabled {
|
|
opacity: 0.4;
|
|
background: #182342;
|
|
border: 1px solid #24355a;
|
|
color: #64748b;
|
|
cursor: not-allowed;
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
|
|
.zp-btn-desc {
|
|
font-size: 0.725rem;
|
|
font-weight: 400;
|
|
opacity: 0.85;
|
|
}
|
|
|
|
/* Brand Group in Header */
|
|
.brand-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
|
|
.badge-syll {
|
|
font-size: 0.7rem;
|
|
font-weight: 600;
|
|
padding: 3px 8px;
|
|
border-radius: 999px;
|
|
background: rgba(37, 99, 235, 0.2);
|
|
border: 1px solid rgba(37, 99, 235, 0.4);
|
|
color: #93c5fd;
|
|
}
|
|
|
|
.user-greeting {
|
|
font-size: 0.85rem;
|
|
font-weight: 600;
|
|
color: #f8fafc;
|
|
}
|
|
|
|
.btn-logout {
|
|
color: #94a3b8;
|
|
font-size: 0.825rem;
|
|
font-weight: 500;
|
|
padding: 4px 8px;
|
|
border-radius: 6px;
|
|
transition: color 0.15s;
|
|
}
|
|
.btn-logout:hover {
|
|
color: #ef4444;
|
|
}
|
|
|
|
@media (max-width: 700px) {
|
|
.zp-mode-cards {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.zp-settings-row {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
.zp-submit-row {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
}
|
|
.zp-btn-start {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
/* Selection clarity: a checked chapter row highlights so deselect is obvious. */
|
|
.zp-chapter-item:has(.chap:checked) .zp-chapter-row {
|
|
background: rgba(37, 99, 235, 0.12);
|
|
border-left: 3px solid #3b82f6;
|
|
}
|
|
.zp-chapter-item:has(.chap:checked) .zp-chapter-title {
|
|
color: #60a5fa;
|
|
}
|
|
.zp-subtopic-row:has(input:checked) .zp-subtopic-title {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
/* ===== brand logo ===== */
|
|
img.brand-logo {
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
filter: drop-shadow(0 0 6px rgba(59, 130, 246, 0.3));
|
|
}
|
|
|
|
/* ===== paper preview: stat cards + subject sections ===== */
|
|
.kv {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
gap: 12px;
|
|
margin: 16px 0;
|
|
}
|
|
.kv .card {
|
|
text-align: center;
|
|
padding: 16px 12px;
|
|
}
|
|
.kv .card b {
|
|
display: block;
|
|
font-size: 1.5rem;
|
|
margin-top: 4px;
|
|
}
|
|
.grid2 {
|
|
display: grid;
|
|
grid-template-columns: 1fr 320px;
|
|
gap: 16px;
|
|
margin: 16px 0;
|
|
}
|
|
@media (max-width: 760px) {
|
|
.grid2 { grid-template-columns: 1fr; }
|
|
}
|
|
.subj-sec { margin-bottom: 12px; }
|
|
.subj-sec h3 { margin-bottom: 8px; }
|
|
.ch-list {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
columns: 2;
|
|
font-size: 0.85rem;
|
|
color: var(--text-main);
|
|
}
|
|
.ch-list li { margin-bottom: 4px; }
|
|
.ch-list li::before { content: "• "; color: var(--text-dim); }
|
|
@media (max-width: 560px) {
|
|
.ch-list { columns: 1; }
|
|
}
|
|
|
|
#save-state.fail {
|
|
color: #fca5a5;
|
|
}
|
|
|
|
#save-state.fail::before {
|
|
content: "!";
|
|
background: rgba(239, 68, 68, 0.18);
|
|
color: #ef4444;
|
|
}
|
|
|
|
/* Stat-card subtext ("6 of 25 attempted", "1 wrong answer") */
|
|
.kv .card .sub {
|
|
display: block;
|
|
font-size: 0.7rem;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
/* "Recommended: tag your N mistakes" banner */
|
|
.card.rec-banner {
|
|
margin: 14px 0;
|
|
border-left: 3px solid #3b82f6;
|
|
}
|
|
|
|
.card.rec-banner b {
|
|
display: block;
|
|
font-size: 0.95rem;
|
|
margin-bottom: 6px;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.card.rec-banner p {
|
|
margin: 0 0 10px;
|
|
font-size: 0.85rem;
|
|
color: var(--text-dim);
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* Chapter name in the chapters table (cyan like ZenithPrep links) */
|
|
.chap-link {
|
|
color: #38bdf8;
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Build page: mode cards, complete-syllabus, two-column layout */
|
|
.zp-mode-cards {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 12px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.zp-mode-card {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
background: var(--panel);
|
|
padding: 14px 16px;
|
|
cursor: pointer;
|
|
transition: border-color 0.15s ease;
|
|
}
|
|
|
|
.zp-mode-card b {
|
|
display: block;
|
|
font-size: 0.95rem;
|
|
color: #ffffff;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.zp-mode-card span {
|
|
font-size: 0.8rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.zp-mode-card.active {
|
|
border-color: #3b82f6;
|
|
background: rgba(59, 130, 246, 0.08);
|
|
}
|
|
|
|
.zp-mode-card.active b {
|
|
color: #93c5fd;
|
|
}
|
|
|
|
.zp-complete-btn {
|
|
background: none;
|
|
border: none;
|
|
color: #93c5fd;
|
|
font-size: 0.85rem;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
padding: 0;
|
|
margin-bottom: 4px;
|
|
text-decoration: underline;
|
|
text-underline-offset: 3px;
|
|
}
|
|
|
|
.zp-complete-btn:hover {
|
|
color: #bfdbfe;
|
|
}
|
|
|
|
.zp-complete-hint {
|
|
font-size: 0.75rem;
|
|
color: var(--text-muted);
|
|
margin: 0 0 18px;
|
|
}
|
|
|
|
.zp-two-col {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) 320px;
|
|
gap: 18px;
|
|
align-items: start;
|
|
}
|
|
|
|
.zp-side-panel {
|
|
position: sticky;
|
|
top: 76px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 18px;
|
|
background: var(--card);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-xl);
|
|
padding: 16px;
|
|
}
|
|
|
|
.zp-side-panel .zp-filter-heading {
|
|
display: block;
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
color: var(--text-muted);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.zp-side-panel .zp-btn-start {
|
|
width: 100%;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
#zp-pool-quotas {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 6px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.zp-quota-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 8px;
|
|
font-size: 0.8rem;
|
|
color: var(--text-dim);
|
|
}
|
|
|
|
.zp-quota-row .zp-quota-badges {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
|
|
.zp-quota-badge {
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
color: #6ee7b7;
|
|
background: rgba(16, 185, 129, 0.12);
|
|
border: 1px solid rgba(16, 185, 129, 0.3);
|
|
border-radius: 999px;
|
|
padding: 2px 8px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@media (max-width: 1024px) {
|
|
.zp-two-col {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.zp-side-panel {
|
|
position: static;
|
|
}
|
|
}
|
|
|
|
/* Past-paper picker panel */
|
|
.zp-past-panel {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
background: var(--panel);
|
|
padding: 14px 16px;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.zp-past-panel .zp-filter-heading {
|
|
display: block;
|
|
font-size: 0.7rem;
|
|
font-weight: 700;
|
|
letter-spacing: 0.08em;
|
|
color: var(--text-muted);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.zp-past-panel .zp-filter-pill input[type=radio] {
|
|
accent-color: #2563eb;
|
|
}
|
|
|
|
/* Programmed summary ("AI summary" analogue) */
|
|
.summary-card {
|
|
margin: 0 0 18px;
|
|
}
|
|
|
|
.summary-notes {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.summary-notes li {
|
|
position: relative;
|
|
padding-left: 18px;
|
|
font-size: 0.9rem;
|
|
line-height: 1.6;
|
|
color: var(--text-dim);
|
|
}
|
|
|
|
.summary-notes li::before {
|
|
content: "→";
|
|
position: absolute;
|
|
left: 0;
|
|
color: #38bdf8;
|
|
}
|