:root { color-scheme: light dark; --ink: #12243b; --ink-soft: #35506d; --paper: #f8f3e8; --paper-strong: #fffdf8; --line: rgba(18, 36, 59, 0.12); --blue: #163d7a; --blue-bright: #1f5fbf; --red: #b12d2b; --gold: #d49b2d; --green: #2c7a52; --shadow: 0 24px 60px rgba(18, 36, 59, 0.12); --radius: 24px; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; color: var(--ink); font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif; background: radial-gradient(circle at top left, rgba(212, 155, 45, 0.17), transparent 24rem), radial-gradient(circle at top right, rgba(31, 95, 191, 0.14), transparent 28rem), linear-gradient(180deg, #f3eee1 0%, #fcfaf4 32%, #f5efe3 100%); } a { color: var(--blue); } .page-shell { width: min(1220px, calc(100% - 2rem)); margin: 0 auto; padding: 1rem 0 4rem; } .hero, .section, .panel, .results { backdrop-filter: blur(10px); } .hero { background: rgba(255, 252, 246, 0.84); border: 1px solid rgba(18, 36, 59, 0.08); border-radius: 32px; padding: 1rem 1.25rem 2rem; box-shadow: var(--shadow); } .tricolor-bar { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.5rem; } .tricolor-bar span { display: block; height: 0.45rem; border-radius: 999px; } .tricolor-bar span:nth-child(1) { background: var(--blue); } .tricolor-bar span:nth-child(2) { background: #f5f1ea; border: 1px solid rgba(18, 36, 59, 0.08); } .tricolor-bar span:nth-child(3) { background: var(--red); } .top-nav { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: flex-end; padding: 1rem 0 1.5rem; font-family: "Avenir Next Condensed", "Franklin Gothic Medium", "Arial Narrow", sans-serif; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; } .top-nav a { text-decoration: none; color: var(--ink-soft); } .hero-grid, .overview-grid, .cram-grid, .memory-grid, .simulator-grid, .study-duo, .timeline-item, .source-card, .scenario-list { display: grid; gap: 1.25rem; } .hero-grid { grid-template-columns: 1.35fr 0.95fr; align-items: start; } .hero-copy h1, .section-heading h2, .panel h3, .results h3 { font-family: "Avenir Next Condensed", "DIN Alternate", "Franklin Gothic Medium", sans-serif; letter-spacing: 0.01em; margin: 0; } .hero-copy h1 { font-size: clamp(2.4rem, 5vw, 4.6rem); line-height: 0.95; max-width: 12ch; } .eyebrow { margin: 0 0 0.65rem; color: var(--red); font-family: "Avenir Next Condensed", "Franklin Gothic Medium", "Arial Narrow", sans-serif; font-size: 0.85rem; letter-spacing: 0.12em; text-transform: uppercase; } .hero-text, .panel p, .study-col li, .timeline-copy, .source-body, .results p, .status-hint, .mini-note p { font-size: 1rem; line-height: 1.55; } .hero-actions, .sim-buttons, .exam-actions { display: flex; flex-wrap: wrap; gap: 0.8rem; margin-top: 1.5rem; } .button { display: inline-flex; align-items: center; justify-content: center; min-height: 2.9rem; padding: 0.85rem 1.2rem; border-radius: 999px; border: 1px solid transparent; cursor: pointer; font: inherit; text-decoration: none; transition: transform 140ms ease, box-shadow 140ms ease, background 140ms ease; } .button:hover { transform: translateY(-1px); } .button.primary { background: linear-gradient(135deg, var(--blue), var(--blue-bright)); color: white; box-shadow: 0 14px 26px rgba(31, 95, 191, 0.25); } .button.secondary { background: rgba(255, 255, 255, 0.82); border-color: rgba(18, 36, 59, 0.12); color: var(--ink); } .exam-card, .panel, .results, .question-card { background: rgba(255, 253, 248, 0.92); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 12px 32px rgba(18, 36, 59, 0.07); } .exam-card { padding: 1.35rem; } .exam-card h2 { margin: 0 0 1rem; font-size: 1.35rem; } .fact-list { margin: 0; padding-left: 1.1rem; display: grid; gap: 0.6rem; } .distribution { margin-top: 1.3rem; padding-top: 1rem; border-top: 1px dashed rgba(18, 36, 59, 0.18); } .distribution-title { margin: 0 0 0.9rem; font-weight: 700; } .distribution-row { display: flex; justify-content: space-between; gap: 1rem; padding: 0.4rem 0; border-bottom: 1px solid rgba(18, 36, 59, 0.06); } .section { margin-top: 1.4rem; padding: 1.4rem; background: rgba(255, 252, 246, 0.76); border: 1px solid rgba(18, 36, 59, 0.08); border-radius: 30px; } .section-heading { margin-bottom: 1.1rem; } .section-heading h2 { font-size: clamp(1.75rem, 3vw, 2.65rem); } .overview-grid { grid-template-columns: repeat(4, 1fr); } .panel { padding: 1.2rem; } .panel.emphasis { background: linear-gradient(145deg, rgba(22, 61, 122, 0.94), rgba(31, 95, 191, 0.9)); color: white; } .panel.emphasis p, .panel.emphasis h3 { color: white; } .study-sections { display: grid; gap: 1rem; } .cram-grid { grid-template-columns: repeat(3, 1fr); } .cram-card { padding: 1.1rem; border-radius: 22px; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.82); } .cram-card h3 { margin: 0 0 0.85rem; font-size: 1.15rem; } .cram-card ul { margin: 0; padding-left: 1.1rem; display: grid; gap: 0.55rem; } .cram-item { display: grid; gap: 0.28rem; } .cram-translation { display: block; color: var(--ink-soft); font-size: 0.96rem; line-height: 1.45; } .study-block { background: rgba(255, 255, 255, 0.62); border: 1px solid var(--line); border-radius: 26px; overflow: hidden; } .study-block summary { list-style: none; cursor: pointer; padding: 1.15rem 1.2rem; display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; background: linear-gradient(135deg, rgba(255, 255, 255, 0.75), rgba(244, 236, 220, 0.8)); } .study-block summary::-webkit-details-marker { display: none; } .study-block summary h3 { font-size: 1.3rem; } .study-block summary p { margin: 0; color: var(--ink-soft); font-size: 0.95rem; } .study-duo { grid-template-columns: 1fr 1fr; padding: 0 1.2rem 1.2rem; } .study-col { padding: 1rem 1rem 1rem 1.1rem; border-radius: 20px; } .study-col.fr { background: rgba(22, 61, 122, 0.06); } .study-col.en { background: rgba(177, 45, 43, 0.05); } .study-col h4 { margin: 0 0 0.8rem; font-size: 1rem; font-family: "Avenir Next Condensed", "Franklin Gothic Medium", sans-serif; letter-spacing: 0.06em; text-transform: uppercase; } .study-col ul { margin: 0; padding-left: 1.1rem; display: grid; gap: 0.7rem; } .context-sentence { display: inline; cursor: help; text-decoration-line: underline; text-decoration-style: dotted; text-decoration-color: rgba(22, 61, 122, 0.45); text-underline-offset: 0.18em; transition: color 140ms ease, text-decoration-color 140ms ease; } .context-sentence:hover, .context-sentence:focus-visible { color: var(--blue); text-decoration-color: rgba(22, 61, 122, 0.95); outline: none; } .timeline-list, .source-list { display: grid; gap: 0.9rem; } .scenario-list { grid-template-columns: repeat(2, 1fr); } .scenario-card { padding: 1.1rem; border-radius: 22px; background: rgba(255, 255, 255, 0.82); border: 1px solid var(--line); } .scenario-card h3 { margin: 0.3rem 0 0.5rem; font-size: 1.1rem; } .scenario-card p { margin: 0.4rem 0 0; } .scenario-label { color: var(--ink-soft); font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; letter-spacing: 0.06em; text-transform: uppercase; font-size: 0.74rem; } .timeline-item { grid-template-columns: 120px 1fr 1fr; align-items: start; padding: 1rem 1.1rem; border-radius: 22px; background: rgba(255, 255, 255, 0.76); border: 1px solid var(--line); } .timeline-date { font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; font-size: 1.35rem; color: var(--red); } .timeline-copy strong { display: block; margin-bottom: 0.3rem; } .memory-grid { grid-template-columns: 320px 1fr; align-items: start; } .memory-card-panel { min-height: 21rem; } .memory-card { min-height: 19rem; display: grid; gap: 1rem; align-content: start; } .memory-face { padding: 1.2rem; border-radius: 20px; border: 1px solid rgba(18, 36, 59, 0.08); background: rgba(255, 255, 255, 0.76); } .memory-face h3, .memory-answer h3 { margin: 0 0 0.65rem; font-size: 0.95rem; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.08em; font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; } .memory-face p, .memory-answer p { margin: 0.35rem 0 0; line-height: 1.55; } .memory-answer { padding: 1.2rem; border-radius: 20px; background: rgba(22, 61, 122, 0.07); } .memory-meta { display: flex; flex-wrap: wrap; gap: 0.7rem; color: var(--ink-soft); font-size: 0.95rem; } .memory-placeholder { margin: 0; color: var(--ink-soft); } .context-tooltip { position: fixed; z-index: 50; width: min(26rem, calc(100vw - 1.5rem)); padding: 1rem 1.05rem; border-radius: 20px; border: 1px solid rgba(18, 36, 59, 0.12); background: rgb(255, 253, 248); box-shadow: 0 22px 44px rgba(18, 36, 59, 0.2); pointer-events: none; } .context-tooltip h3, .context-tooltip h4 { margin: 0; font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; } .context-tooltip h3 { font-size: 1rem; color: var(--blue); } .context-tooltip h4 { margin-top: 0.8rem; font-size: 0.82rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-soft); } .context-tooltip p { margin: 0.35rem 0 0; line-height: 1.5; font-size: 0.97rem; } .simulator-grid { grid-template-columns: 320px 1fr; align-items: start; } .sticky-panel { position: sticky; top: 1rem; } .control { display: grid; gap: 0.45rem; margin-bottom: 1rem; } .control span, .status-label { font-family: "Avenir Next Condensed", "Franklin Gothic Medium", sans-serif; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.78rem; color: var(--ink-soft); } .toggle-control { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 0.7rem; margin-bottom: 1rem; padding: 0.85rem 0.95rem; border-radius: 16px; border: 1px solid rgba(18, 36, 59, 0.1); background: rgba(255, 255, 255, 0.78); } .toggle-control span { font-family: inherit; font-size: 0.98rem; letter-spacing: normal; text-transform: none; color: var(--ink); } .toggle-control input { width: 1rem; height: 1rem; } select { width: 100%; min-height: 2.8rem; border-radius: 14px; border: 1px solid rgba(18, 36, 59, 0.14); background: white; color: var(--ink); padding: 0.65rem 0.8rem; font: inherit; } .mini-note { margin-top: 1rem; padding: 0.9rem 1rem; border-radius: 16px; background: rgba(22, 61, 122, 0.06); } .training-stats { display: grid; gap: 0.7rem; margin-top: 1rem; } .training-stat { display: flex; justify-content: space-between; gap: 1rem; padding: 0.75rem 0.9rem; border-radius: 16px; background: rgba(255, 255, 255, 0.78); border: 1px solid rgba(18, 36, 59, 0.08); } .training-stat span { color: var(--ink-soft); } .training-stat strong { font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; font-size: 1.1rem; } .status-panel { margin-bottom: 1rem; } .status-meta { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; } .status-value { margin: 0.2rem 0 0; font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; font-size: 1.8rem; } .exam-form { display: grid; gap: 1rem; } .question-card { padding: 1.1rem; } .question-topline { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; margin-bottom: 0.8rem; } .question-index { font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; letter-spacing: 0.08em; text-transform: uppercase; color: var(--red); font-size: 0.8rem; } .question-theme { color: var(--ink-soft); font-size: 0.9rem; } .question-text { margin: 0 0 1rem; display: grid; gap: 0.45rem; } .question-text .fr-text { font-weight: 700; font-size: 1.06rem; } .question-text .en-text { color: var(--ink-soft); } .choices { display: grid; gap: 0.7rem; } .choice { display: grid; grid-template-columns: auto 1fr; gap: 0.8rem; align-items: start; padding: 0.8rem 0.85rem; border-radius: 16px; border: 1px solid rgba(18, 36, 59, 0.09); background: rgba(255, 255, 255, 0.8); } .choice input { margin-top: 0.35rem; } .choice .fr-choice { font-weight: 700; } .choice .en-choice { color: var(--ink-soft); margin-top: 0.2rem; font-size: 0.95rem; } .exam-actions { margin-top: 1rem; } .compact-buttons { margin-top: 0.75rem; } .results { margin-top: 1.2rem; padding: 1.2rem; } .results-header { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 1rem; } .score-pill { border-radius: 999px; padding: 0.45rem 0.85rem; font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; letter-spacing: 0.06em; text-transform: uppercase; } .score-pill.pass { background: rgba(44, 122, 82, 0.12); color: var(--green); } .score-pill.fail { background: rgba(177, 45, 43, 0.12); color: var(--red); } .results-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.8rem; margin-top: 1rem; } .result-card { padding: 0.9rem; border-radius: 16px; background: rgba(255, 255, 255, 0.7); border: 1px solid rgba(18, 36, 59, 0.08); } .result-card strong { display: block; font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; font-size: 1.45rem; margin-top: 0.2rem; } .review-list { display: grid; gap: 0.8rem; margin-top: 1.2rem; } .review-item { padding: 0.9rem; border-radius: 18px; border: 1px solid rgba(18, 36, 59, 0.08); background: rgba(252, 248, 239, 0.92); } .review-item.correct { border-color: rgba(44, 122, 82, 0.22); } .review-item.incorrect { border-color: rgba(177, 45, 43, 0.2); } .review-answer { display: grid; gap: 0.25rem; margin-top: 0.6rem; } body.french-only .en-text, body.french-only .en-choice, body.french-only .memory-face .en-copy, body.french-only .memory-answer .en-copy { display: none; } .source-list { grid-template-columns: repeat(2, 1fr); } .source-card { grid-template-columns: 1fr auto; padding: 1rem 1.1rem; border-radius: 22px; background: rgba(255, 255, 255, 0.78); border: 1px solid var(--line); } .source-card h3 { margin: 0 0 0.35rem; font-size: 1.1rem; } .source-tag { align-self: start; padding: 0.35rem 0.65rem; border-radius: 999px; background: rgba(22, 61, 122, 0.08); color: var(--blue); font-family: "Avenir Next Condensed", "DIN Alternate", sans-serif; letter-spacing: 0.06em; text-transform: uppercase; font-size: 0.74rem; } .hidden { display: none !important; } @media (prefers-color-scheme: dark) { :root { --ink: #eef3fb; --ink-soft: #b8c7dc; --line: rgba(214, 226, 243, 0.14); --blue: #8ab4ff; --blue-bright: #5d94ff; --red: #ff8c86; --green: #82d6a5; --shadow: 0 24px 60px rgba(0, 0, 0, 0.38); } body { background: radial-gradient(circle at top left, rgba(212, 155, 45, 0.12), transparent 24rem), radial-gradient(circle at top right, rgba(93, 148, 255, 0.16), transparent 28rem), linear-gradient(180deg, #0f1726 0%, #111d31 38%, #0b1220 100%); } a { color: #a6c4ff; } .hero, .section { background: rgba(15, 23, 38, 0.8); border-color: rgba(214, 226, 243, 0.1); } .exam-card, .panel, .results, .question-card, .cram-card, .study-block, .scenario-card, .timeline-item, .memory-face, .source-card, .result-card, .review-item, .training-stat, .toggle-control, .context-tooltip { background: rgb(17, 27, 44); border-color: rgba(214, 226, 243, 0.1); box-shadow: 0 16px 36px rgba(0, 0, 0, 0.28); } .study-block summary { background: linear-gradient(135deg, rgba(28, 40, 63, 0.92), rgba(18, 29, 47, 0.92)); } .study-col.fr { background: rgba(93, 148, 255, 0.12); } .study-col.en { background: rgba(255, 140, 134, 0.08); } .memory-answer, .mini-note { background: rgba(93, 148, 255, 0.1); } .button.secondary, .choice, .source-tag { background: rgba(25, 38, 60, 0.9); border-color: rgba(214, 226, 243, 0.1); color: var(--ink); } .source-tag { color: #a6c4ff; } select { background: rgba(12, 19, 31, 0.95); border-color: rgba(214, 226, 243, 0.14); color: var(--ink); } .distribution { border-top-color: rgba(214, 226, 243, 0.2); } .distribution-row, .choice, .source-card, .training-stat, .review-item { border-color: rgba(214, 226, 243, 0.08); } .tricolor-bar span:nth-child(2) { background: rgba(240, 244, 252, 0.86); border-color: rgba(214, 226, 243, 0.18); } .context-sentence { text-decoration-color: rgba(166, 196, 255, 0.45); } .context-sentence:hover, .context-sentence:focus-visible { color: #a6c4ff; text-decoration-color: rgba(166, 196, 255, 0.95); } .question-text .en-text, .choice .en-choice, .study-block summary p, .scenario-label, .memory-meta, .memory-placeholder, .source-body, .top-nav a, .training-stat span, .context-tooltip h4 { color: var(--ink-soft); } } @media (max-width: 1080px) { .hero-grid, .cram-grid, .memory-grid, .simulator-grid, .overview-grid, .source-list, .scenario-list { grid-template-columns: 1fr; } .overview-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 760px) { .page-shell { width: min(100% - 1rem, 100%); } .hero, .section { border-radius: 24px; padding: 1rem; } .study-duo, .timeline-item, .status-meta, .results-grid { grid-template-columns: 1fr; } .overview-grid { grid-template-columns: 1fr; } .top-nav { justify-content: flex-start; } .hero-copy h1 { max-width: none; } }