SPB Git forge

spb/qc26

Public
10commits 1branches 0releases
2.8 MBsize
maindefault branch
17 days agolast push
Python 51.6% TypeScript 46.7% CSS 1.7%
12.9 KB · 258 lines css
Raw Blame History
1@import "tailwindcss";23@custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *));45/* ==================================================================== tokens6   QC26 « Editorial Data Intelligence » — papier chaud, encre, un seul accent (sarcelle,7   jamais une couleur de parti). Les couleurs de partis vivent ici en variables, adaptées au8   thème sombre (le marine du PQ et le violet du PCQ sont éclaircis pour rester lisibles). */9:root {10  --background: #f6f5f1;11  --surface: #ffffff;12  --surface-2: #f0eee8;13  --surface-3: #e6e3db;14  --surface-4: #d9d5cb;15  --border: rgba(20, 22, 28, 0.1);16  --border-strong: rgba(20, 22, 28, 0.22);17  --text: #15171c;18  --text-2: #5c6270;19  --text-3: #8b909b;20  --text-inverse: #f6f5f1;21  --qc26: #15171c;22  --qc26-accent: #0f766e;23  --qc26-accent-strong: #0b5d57;24  --qc26-accent-soft: rgba(15, 118, 110, 0.1);25  --qc26-accent-ink: #ffffff;26  --live: #d12f2f;27  --live-soft: rgba(209, 47, 47, 0.1);28  --ok: #1f7a3a;29  --ok-soft: rgba(31, 122, 58, 0.1);30  --warn: #b45309;31  --warn-soft: rgba(180, 83, 9, 0.12);32  --grid: rgba(20, 22, 28, 0.07);33  --p-caq: #20a8e0;34  --p-plq: #ed1b2d;35  --p-pq: #1e295c;36  --p-qs: #ff5505;37  --p-pcq: #6e4c9f;38  --p-aut: #9aa0a6;39  --p-none: #c9c5bb;40  --radius: 12px;41  --radius-lg: 18px;42  --radius-sm: 8px;43  --shadow-sm: 0 1px 2px rgba(21, 23, 28, 0.05), 0 1px 1px rgba(21, 23, 28, 0.03);44  --shadow-md: 0 10px 30px -18px rgba(21, 23, 28, 0.35), 0 2px 8px -4px rgba(21, 23, 28, 0.08);45  --shadow-lg: 0 30px 60px -30px rgba(21, 23, 28, 0.4);46  --font-sans: var(--font-inter), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;47  --font-display: var(--font-fraunces), "Iowan Old Style", "Palatino Linotype", Georgia, serif;48  --font-mono: var(--font-jetbrains), ui-monospace, "SF Mono", Menlo, Consolas, monospace;49  --header-h: 60px;50  --bottom-nav-h: 62px;51  --header-bg: rgba(246, 245, 241, 0.82);52  --nav-bg: rgba(255, 255, 255, 0.9);53  --hero-glow: radial-gradient(1200px 500px at 15% -10%, rgba(15, 118, 110, 0.14), transparent 60%), radial-gradient(900px 400px at 95% 0%, rgba(21, 23, 28, 0.06), transparent 60%);54  color-scheme: light;55}56:root[data-theme="dark"] {57  --background: #0e1013;58  --surface: #15181d;59  --surface-2: #1c2027;60  --surface-3: #252a33;61  --surface-4: #313743;62  --border: rgba(255, 255, 255, 0.09);63  --border-strong: rgba(255, 255, 255, 0.2);64  --text: #edeff3;65  --text-2: #a5abb8;66  --text-3: #737a88;67  --text-inverse: #0e1013;68  --qc26: #edeff3;69  --qc26-accent: #2fb8aa;70  --qc26-accent-strong: #5fd3c7;71  --qc26-accent-soft: rgba(47, 184, 170, 0.14);72  --qc26-accent-ink: #0e1013;73  --live: #f0554f;74  --live-soft: rgba(240, 85, 79, 0.14);75  --ok: #3fbf6b;76  --ok-soft: rgba(63, 191, 107, 0.14);77  --warn: #e0a23a;78  --warn-soft: rgba(224, 162, 58, 0.14);79  --grid: rgba(255, 255, 255, 0.07);80  --p-caq: #3db8ea;81  --p-plq: #f24c5a;82  --p-pq: #7385dc;83  --p-qs: #ff7a3d;84  --p-pcq: #ab8ee3;85  --p-aut: #8b919c;86  --p-none: #3a404b;87  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);88  --shadow-md: 0 12px 30px -18px rgba(0, 0, 0, 0.8), 0 2px 8px -4px rgba(0, 0, 0, 0.5);89  --shadow-lg: 0 30px 60px -30px rgba(0, 0, 0, 0.9);90  --header-bg: rgba(14, 16, 19, 0.78);91  --nav-bg: rgba(21, 24, 29, 0.92);92  --hero-glow: radial-gradient(1200px 500px at 15% -10%, rgba(47, 184, 170, 0.16), transparent 60%), radial-gradient(900px 400px at 95% 0%, rgba(115, 133, 220, 0.1), transparent 60%);93  color-scheme: dark;94}9596@theme inline {97  --color-background: var(--background);98  --color-surface: var(--surface);99  --color-surface-2: var(--surface-2);100  --color-surface-3: var(--surface-3);101  --color-surface-4: var(--surface-4);102  --color-border: var(--border);103  --color-border-strong: var(--border-strong);104  --color-ink: var(--text);105  --color-ink-2: var(--text-2);106  --color-ink-3: var(--text-3);107  --color-ink-inverse: var(--text-inverse);108  --color-brand: var(--qc26);109  --color-accent: var(--qc26-accent);110  --color-accent-strong: var(--qc26-accent-strong);111  --color-accent-soft: var(--qc26-accent-soft);112  --color-accent-ink: var(--qc26-accent-ink);113  --color-live: var(--live);114  --color-live-soft: var(--live-soft);115  --color-ok: var(--ok);116  --color-ok-soft: var(--ok-soft);117  --color-warn: var(--warn);118  --color-warn-soft: var(--warn-soft);119  --font-sans: var(--font-sans);120  --font-display: var(--font-display);121  --font-mono: var(--font-mono);122  --radius-card: var(--radius);123  --radius-card-lg: var(--radius-lg);124}125126/* ====================================================================== base */127html {128  -webkit-text-size-adjust: 100%;129  scroll-behavior: smooth;130}131@media (prefers-reduced-motion: reduce) {132  html { scroll-behavior: auto; }133  *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; }134}135body {136  background: var(--background);137  color: var(--text);138  font-family: var(--font-sans);139  font-feature-settings: "cv11", "ss01", "ss03";140  -webkit-font-smoothing: antialiased;141  text-rendering: optimizeLegibility;142  min-height: 100dvh;143  transition: background-color 0.25s ease, color 0.25s ease;144}145@layer base {146  a { color: inherit; text-decoration: none; }147  a:hover { text-decoration: none; }148  ::selection { background: var(--qc26-accent-soft); }149  :focus-visible { outline: 2px solid var(--qc26-accent); outline-offset: 2px; border-radius: 4px; }150}151152/* ================================================================ typography */153.display { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.02em; line-height: 0.98; font-variation-settings: "opsz" 144, "SOFT" 30; }154.display-tight { letter-spacing: -0.035em; }155.figure { font-family: var(--font-display); font-weight: 500; letter-spacing: -0.03em; line-height: 0.9; font-variant-numeric: tabular-nums lining-nums; font-variation-settings: "opsz" 144, "SOFT" 0; }156.serif { font-family: var(--font-display); }157.num { font-variant-numeric: tabular-nums lining-nums; letter-spacing: -0.01em; }158.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }159.eyebrow { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; color: var(--text-2); }160.eyebrow-accent { color: var(--qc26-accent); }161.lede { font-size: 16px; line-height: 1.6; color: var(--text-2); }162.prose-qc26 p { line-height: 1.7; }163.prose-qc26 b { color: var(--text); }164165/* ================================================================ surfaces */166.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-sm); }167.card-lg { border-radius: var(--radius-lg); }168.card-flat { box-shadow: none; }169.card-hover { transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease; }170.card-hover:hover { box-shadow: var(--shadow-md); border-color: var(--border-strong); transform: translateY(-1px); }171.hairline { border-color: var(--border); }172.surface-2 { background: var(--surface-2); }173.surface-3 { background: var(--surface-3); }174.inset { background: var(--surface-2); border-radius: var(--radius-sm); }175.ink-panel { background: var(--qc26); color: var(--text-inverse); }176.hero-glow { background-image: var(--hero-glow); }177.glass { background: var(--header-bg); backdrop-filter: saturate(160%) blur(14px); -webkit-backdrop-filter: saturate(160%) blur(14px); }178.divider { height: 1px; background: var(--border); }179.rule-top { border-top: 2px solid var(--text); }180.section-num { font-family: var(--font-mono); font-size: 11px; color: var(--text-3); letter-spacing: 0.08em; }181182/* ================================================================ buttons */183.btn { display: inline-flex; align-items: center; gap: 8px; border-radius: 10px; padding: 10px 16px; font-size: 14px; font-weight: 600; border: 1px solid transparent; transition: background-color 0.15s, color 0.15s, border-color 0.15s, transform 0.1s; white-space: nowrap; }184.btn:active { transform: translateY(1px); }185.btn-primary { background: var(--text); color: var(--text-inverse); }186.btn-primary:hover { background: var(--qc26-accent-strong); color: #fff; }187.btn-accent { background: var(--qc26-accent); color: var(--qc26-accent-ink); }188.btn-accent:hover { background: var(--qc26-accent-strong); }189.btn-ghost { background: var(--surface); border-color: var(--border-strong); color: var(--text); }190.btn-ghost:hover { background: var(--surface-2); }191.btn-sm { padding: 6px 11px; font-size: 12.5px; border-radius: 8px; }192.link { color: var(--qc26-accent); font-weight: 500; }193.link:hover { text-decoration: underline; text-underline-offset: 3px; }194.chip { display: inline-flex; align-items: center; gap: 6px; border-radius: 999px; padding: 6px 12px; font-size: 13px; font-weight: 500; border: 1px solid var(--border); background: var(--surface); transition: background-color 0.15s, border-color 0.15s, color 0.15s; }195.chip:hover { background: var(--surface-2); }196.chip-active { background: var(--text); color: var(--text-inverse); border-color: var(--text); }197.chip-active:hover { background: var(--text); }198199/* ================================================================ tables */200.data-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 13.5px; }201.data-table th { text-align: left; font-family: var(--font-mono); font-weight: 600; color: var(--text-2); font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase; padding: 10px 12px; border-bottom: 1px solid var(--border); white-space: nowrap; position: sticky; top: 0; background: var(--surface); z-index: 1; }202.data-table td { padding: 10px 12px; border-bottom: 1px solid var(--border); vertical-align: middle; }203.data-table tr:last-child td { border-bottom: 0; }204.data-table tbody tr:hover { background: var(--surface-2); }205.data-table .r { text-align: right; }206select, input[type="text"], input[type="search"] { color: var(--text); background: var(--surface); }207input[type="range"] { accent-color: var(--qc26-accent); }208input[type="checkbox"] { accent-color: var(--qc26-accent); }209210/* ================================================================ utilities */211.scrollbar-none { scrollbar-width: none; }212.scrollbar-none::-webkit-scrollbar { display: none; }213.safe-bottom { padding-bottom: max(env(safe-area-inset-bottom), 0px); }214.tabular { font-variant-numeric: tabular-nums; }215.pcolor { color: var(--pc); }216.pbg { background: var(--pc); }217218@keyframes pulse-dot { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }219.live-dot { width: 8px; height: 8px; border-radius: 999px; background: var(--live); display: inline-block; animation: pulse-dot 1.6s ease-in-out infinite; }220@keyframes fade-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }221.fade-up { animation: fade-up 0.45s cubic-bezier(0.2, 0.7, 0.2, 1) both; }222.fade-up-2 { animation-delay: 0.08s; }223.fade-up-3 { animation-delay: 0.16s; }224@keyframes ticker-in { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }225.ticker-in { animation: ticker-in 0.3s ease-out both; }226@keyframes grow-x { from { transform: scaleX(0); } to { transform: scaleX(1); } }227.grow-x { transform-origin: left; animation: grow-x 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) both; }228229/* mobile : rails horizontaux à défilement magnétique */230.rail { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 6px; margin-inline: -16px; padding-inline: 16px; scrollbar-width: none; }231.rail::-webkit-scrollbar { display: none; }232.rail > * { scroll-snap-align: start; flex: 0 0 78%; max-width: 320px; }233@media (min-width: 640px) { .rail { display: grid; overflow: visible; margin-inline: 0; padding-inline: 0; } .rail > * { flex: initial; max-width: none; } }234/* mobile : rangée de sondage compacte */235.poll-row { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 10px 14px; border-bottom: 1px solid var(--border); }236.poll-row:last-child { border-bottom: 0; }237.poll-vals { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; grid-column: 1 / -1; margin-top: 4px; }238.poll-vals > div { text-align: center; border-radius: 6px; padding: 4px 0 3px; background: var(--surface-2); }239.poll-vals .lbl { font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.06em; text-transform: uppercase; }240.poll-vals .val { font-family: var(--font-mono); font-size: 14px; font-weight: 600; line-height: 1.1; }241@media (max-width: 767px) {242  .data-table { font-size: 13px; }243  .data-table th, .data-table td { padding: 8px 10px; }244  .figure-hero { font-size: 92px !important; }245  .card { border-radius: 12px; }246  .section-gap > * + * { margin-top: 44px; }247}248249/* charts */250.chart-grid line { stroke: var(--grid); }251.chart-tip { position: absolute; pointer-events: none; z-index: 20; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 10px; box-shadow: var(--shadow-md); padding: 8px 10px; font-size: 12px; line-height: 1.35; min-width: 150px; }252253/* waffle */254.waffle-dot { transition: fill 0.3s ease, opacity 0.3s ease; }255256/* print */257@media print { header, nav, footer, .no-print { display: none !important; } body { background: #fff; } }258