diff --git a/site/assets/css/extended/custom.css b/site/assets/css/extended/custom.css index 135fadb..bae901d 100644 --- a/site/assets/css/extended/custom.css +++ b/site/assets/css/extended/custom.css @@ -3,6 +3,175 @@ themes/PaperMod submodule — those never get committed, and CI checks the submodule out fresh, so they would be missing from the deployed site. */ +/* --------------------------------------------------------------------------- + Palette + + PaperMod ships a neutral grey on grey. This replaces both schemes with a + quieter green-slate pair: paper under morning light, and a desk lamp at + night. Every colour below is a redefinition of a PaperMod variable, plus + four of our own (--accent, --accent-soft, --accent-line, --warm, --wash), + so the rest of the theme picks the palette up without further overrides. +--------------------------------------------------------------------------- */ + +:root { + --theme: #f2f5f3; + --entry: #ffffff; + --primary: #1e2b28; + --secondary: #5b6d68; + --tertiary: #d8e0db; + --content: #2b3a36; + --border: #e3eae5; + --code-bg: #e8efea; + --code-block-bg: #1b2523; + + --accent: #14705f; + --accent-soft: rgba(20, 112, 95, 0.09); + --accent-line: rgba(20, 112, 95, 0.32); + --warm: #9a5f22; + --wash: rgba(20, 112, 95, 0.07); + --shadow: 0 1px 2px rgba(30, 43, 40, 0.04), 0 8px 24px rgba(30, 43, 40, 0.05); + --shadow-hover: 0 2px 4px rgba(30, 43, 40, 0.06), 0 14px 32px rgba(30, 43, 40, 0.09); +} + +:root[data-theme="dark"] { + --theme: #131917; + --entry: #1b2321; + --primary: #e0e8e4; + --secondary: #94a5a0; + --tertiary: #2c3a36; + --content: #c6d3ce; + --border: #26312e; + --code-bg: #202a27; + --code-block-bg: #0f1513; + + --accent: #6ec7ae; + --accent-soft: rgba(110, 199, 174, 0.11); + --accent-line: rgba(110, 199, 174, 0.30); + --warm: #e0b478; + --wash: rgba(110, 199, 174, 0.06); + --shadow: 0 1px 2px rgba(0, 0, 0, 0.25), 0 8px 24px rgba(0, 0, 0, 0.20); + --shadow-hover: 0 2px 4px rgba(0, 0, 0, 0.30), 0 14px 32px rgba(0, 0, 0, 0.28); +} + +/* A single soft light source behind the header, fixed so it stays put while + long venue tables scroll. Low enough alpha to read as tint, not gradient. */ +body { + background-image: radial-gradient(1100px 420px at 50% -140px, var(--wash), transparent 72%); + background-attachment: fixed; +} + +/* PaperMod tints list pages with --code-bg, which now belongs to code chips. + Keep every page on the same ground. */ +.list, +[data-theme="dark"] .list { + background-color: var(--theme); +} + +::selection { + background: var(--accent-soft); +} + +:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +/* --------------------------------------------------------------------------- + Accent placement +--------------------------------------------------------------------------- */ + +.md-content a:not(.anchor) { + color: var(--accent); + text-decoration-color: var(--accent-line); +} + +.md-content a:not(.anchor):hover { + text-decoration-color: var(--accent); +} + +.md-content blockquote { + border-inline-start-color: var(--accent-line); +} + +.menu .active { + color: var(--accent); + text-decoration-color: var(--accent); +} + +.header { + border-bottom: 1px solid var(--border); +} + +.post-entry { + box-shadow: var(--shadow); +} + +.post-entry:hover, +.post-entry:focus-within { + border-color: var(--accent-line); + box-shadow: var(--shadow-hover); +} + +.pagination a, +.paginav a { + color: var(--accent); +} + +/* --------------------------------------------------------------------------- + Venue tables + + The tracker is mostly tables, and PaperMod's full 1px grid is what made them + read as a spreadsheet. Rules run horizontally only; the header carries the + tint, and the hovered row tells you which venue you are reading across. +--------------------------------------------------------------------------- */ + +.md-content table th, +.md-content table:not(.highlighttable, .highlight table, .gist .highlight) td { + border: 0; + border-bottom: 1px solid var(--border); +} + +.md-content table th { + background: var(--code-bg); + color: var(--secondary); + font-size: 0.8em; + font-weight: 600; + letter-spacing: 0.03em; + text-transform: uppercase; + border-bottom: 1px solid var(--tertiary); +} + +.md-content table tbody tr:hover { + background: var(--accent-soft); +} + +/* Venue detail pages carry headerless fact tables. Their empty header row would + now show as a tinted bar above the first fact. */ +.md-content table thead:not(:has(th:not(:empty))) { + display: none; +} + +/* In a table that does have headers, bold marks the one cell worth finding + first: the ICORE rank, the SCImago quartile, the cycle that is still open. + Warm keeps it separate from the run of dates beside it. Detail pages are + excluded — there bold marks every row label, which is not emphasis. */ +.md-content table:has(thead th:not(:empty)) td strong { + color: var(--warm); +} + +/* Domains and tags are inline code spans. Chips, not code. */ +.md-content :not(pre) > code { + background: var(--accent-soft); + color: var(--accent); + border-radius: 999px; + padding: 0.15em 0.55em; + font-size: 0.72em; +} + +/* --------------------------------------------------------------------------- + Layout adjustments (predate the palette) +--------------------------------------------------------------------------- */ + /* Shorter hero block: PaperMod reserves 320px / 260px for a lead image we don't use, which pushed the venue tables below the fold. */ .first-entry { @@ -19,7 +188,7 @@ full title weight; the topic reads as a secondary breadcrumb. */ .logo-sep { margin: 0 6px; - color: var(--secondary); + color: var(--tertiary); font-size: 24px; font-weight: 400; } @@ -30,6 +199,10 @@ color: var(--secondary); } +.logo .logo-topic:hover { + color: var(--accent); +} + /* Topic cards on the home page. The stats line and the section shortcuts sit inside PaperMod's .post-entry, whose ::before overlay swallows clicks, so the shortcut links need to be lifted above it to stay clickable. */ @@ -44,6 +217,11 @@ color: var(--secondary); } +.topic-stats strong { + color: var(--primary); + font-weight: 600; +} + .topic-links { display: flex; gap: 16px; @@ -53,7 +231,12 @@ } .topic-links a { - box-shadow: 0 1px 0 var(--primary); + color: var(--accent); + box-shadow: 0 1px 0 var(--accent-line); +} + +.topic-links a:hover { + box-shadow: 0 1px 0 var(--accent); } /* Intro copy above a list of cards. PaperMod gives .post-entry a bottom margin diff --git a/site/content/cloud-edge/calendar/_index.md b/site/content/cloud-edge/calendar/_index.md index e9581d1..b7864d5 100644 --- a/site/content/cloud-edge/calendar/_index.md +++ b/site/content/cloud-edge/calendar/_index.md @@ -1,13 +1,14 @@ --- title: Submission Deadlines layout: calendar -generated: '2026-08-17T18:03:33Z' +generated: '2026-08-17T18:20:48Z' draft: false events: - title: OSDI — abstract deadline start: '2026-12-01' url: /cloud-edge/venues/conferences/osdi/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Baltimore, MD, USA @@ -15,7 +16,8 @@ events: - title: OSDI — paper deadline start: '2026-12-08' url: /cloud-edge/venues/conferences/osdi/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Baltimore, MD, USA @@ -23,7 +25,8 @@ events: - title: OSDI — notification start: '2027-03-16' url: /cloud-edge/venues/conferences/osdi/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Baltimore, MD, USA @@ -31,7 +34,8 @@ events: - title: OSDI start: '2027-07-07' url: /cloud-edge/venues/conferences/osdi/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2027-07-10' extendedProps: @@ -39,7 +43,8 @@ events: - title: SOSP — abstract deadline start: '2026-03-26' url: /cloud-edge/venues/conferences/sosp/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Prague, Czechia @@ -47,7 +52,8 @@ events: - title: SOSP — paper deadline start: '2026-04-01' url: /cloud-edge/venues/conferences/sosp/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Prague, Czechia @@ -55,7 +61,8 @@ events: - title: SOSP — notification start: '2026-07-03' url: /cloud-edge/venues/conferences/sosp/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Prague, Czechia @@ -63,7 +70,8 @@ events: - title: SOSP start: '2026-09-29' url: /cloud-edge/venues/conferences/sosp/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-10-03' extendedProps: @@ -71,7 +79,8 @@ events: - title: NSDI Spring — abstract deadline start: '2026-04-16' url: /cloud-edge/venues/conferences/nsdi/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Providence, RI, USA @@ -80,7 +89,8 @@ events: - title: NSDI Spring — paper deadline start: '2026-04-23' url: /cloud-edge/venues/conferences/nsdi/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Providence, RI, USA @@ -89,7 +99,8 @@ events: - title: NSDI Spring — notification start: '2026-07-23' url: /cloud-edge/venues/conferences/nsdi/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Providence, RI, USA @@ -98,7 +109,8 @@ events: - title: NSDI Fall — abstract deadline start: '2026-09-10' url: /cloud-edge/venues/conferences/nsdi/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Providence, RI, USA @@ -107,7 +119,8 @@ events: - title: NSDI Fall — paper deadline start: '2026-09-17' url: /cloud-edge/venues/conferences/nsdi/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Providence, RI, USA @@ -116,7 +129,8 @@ events: - title: NSDI Fall — notification start: '2026-12-08' url: /cloud-edge/venues/conferences/nsdi/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Providence, RI, USA @@ -125,7 +139,8 @@ events: - title: NSDI start: '2027-05-11' url: /cloud-edge/venues/conferences/nsdi/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2027-05-14' extendedProps: @@ -133,7 +148,8 @@ events: - title: EuroSys Spring — abstract deadline start: '2026-05-07' url: /cloud-edge/venues/conferences/eurosys/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Rabat, Morocco @@ -142,7 +158,8 @@ events: - title: EuroSys Spring — paper deadline start: '2026-05-14' url: /cloud-edge/venues/conferences/eurosys/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Rabat, Morocco @@ -151,7 +168,8 @@ events: - title: EuroSys Spring — notification start: '2026-08-21' url: /cloud-edge/venues/conferences/eurosys/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Rabat, Morocco @@ -160,7 +178,8 @@ events: - title: EuroSys Fall — abstract deadline start: '2026-09-17' url: /cloud-edge/venues/conferences/eurosys/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Rabat, Morocco @@ -169,7 +188,8 @@ events: - title: EuroSys Fall — paper deadline start: '2026-09-24' url: /cloud-edge/venues/conferences/eurosys/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Rabat, Morocco @@ -178,7 +198,8 @@ events: - title: EuroSys Fall — notification start: '2027-01-29' url: /cloud-edge/venues/conferences/eurosys/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Rabat, Morocco @@ -187,7 +208,8 @@ events: - title: EuroSys start: '2027-04-19' url: /cloud-edge/venues/conferences/eurosys/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2027-04-24' extendedProps: @@ -195,7 +217,8 @@ events: - title: ATC — paper deadline start: '2026-06-10' url: /cloud-edge/venues/conferences/atc/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Hong Kong @@ -203,7 +226,8 @@ events: - title: ATC — notification start: '2026-09-18' url: /cloud-edge/venues/conferences/atc/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Hong Kong @@ -211,7 +235,8 @@ events: - title: ATC start: '2026-11-16' url: /cloud-edge/venues/conferences/atc/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-11-19' extendedProps: @@ -219,7 +244,8 @@ events: - title: SoCC Round 1 — abstract deadline start: '2026-02-06' url: /cloud-edge/venues/conferences/socc/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Singapore @@ -228,7 +254,8 @@ events: - title: SoCC Round 1 — paper deadline start: '2026-02-13' url: /cloud-edge/venues/conferences/socc/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Singapore @@ -237,7 +264,8 @@ events: - title: SoCC Round 1 — notification start: '2026-04-29' url: /cloud-edge/venues/conferences/socc/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Singapore @@ -246,7 +274,8 @@ events: - title: SoCC Round 2 — abstract deadline start: '2026-07-07' url: /cloud-edge/venues/conferences/socc/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Singapore @@ -255,7 +284,8 @@ events: - title: SoCC Round 2 — paper deadline start: '2026-07-14' url: /cloud-edge/venues/conferences/socc/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Singapore @@ -264,7 +294,8 @@ events: - title: SoCC Round 2 — notification start: '2026-09-26' url: /cloud-edge/venues/conferences/socc/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Singapore @@ -273,7 +304,8 @@ events: - title: SoCC start: '2026-11-18' url: /cloud-edge/venues/conferences/socc/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-11-21' extendedProps: @@ -281,7 +313,8 @@ events: - title: Middleware Winter — abstract deadline start: '2025-12-09' url: /cloud-edge/venues/conferences/middleware/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Tarragona, Spain @@ -290,7 +323,8 @@ events: - title: Middleware Winter — paper deadline start: '2025-12-12' url: /cloud-edge/venues/conferences/middleware/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Tarragona, Spain @@ -299,7 +333,8 @@ events: - title: Middleware Winter — notification start: '2026-03-06' url: /cloud-edge/venues/conferences/middleware/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Tarragona, Spain @@ -308,7 +343,8 @@ events: - title: Middleware Summer — abstract deadline start: '2026-05-29' url: /cloud-edge/venues/conferences/middleware/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Tarragona, Spain @@ -317,7 +353,8 @@ events: - title: Middleware Summer — paper deadline start: '2026-06-05' url: /cloud-edge/venues/conferences/middleware/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Tarragona, Spain @@ -326,7 +363,8 @@ events: - title: Middleware Summer — notification start: '2026-08-28' url: /cloud-edge/venues/conferences/middleware/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Tarragona, Spain @@ -335,7 +373,8 @@ events: - title: Middleware start: '2026-12-14' url: /cloud-edge/venues/conferences/middleware/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-12-19' extendedProps: @@ -343,7 +382,8 @@ events: - title: IPDPS — abstract deadline start: '2026-10-01' url: /cloud-edge/venues/conferences/ipdps/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Seattle, WA, USA @@ -351,7 +391,8 @@ events: - title: IPDPS — paper deadline start: '2026-10-08' url: /cloud-edge/venues/conferences/ipdps/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Seattle, WA, USA @@ -359,7 +400,8 @@ events: - title: IPDPS — notification start: '2027-02-02' url: /cloud-edge/venues/conferences/ipdps/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Seattle, WA, USA @@ -367,7 +409,8 @@ events: - title: IPDPS start: '2027-06-01' url: /cloud-edge/venues/conferences/ipdps/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2027-06-06' extendedProps: @@ -375,7 +418,8 @@ events: - title: SC — abstract deadline start: '2026-04-01' url: /cloud-edge/venues/conferences/sc/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Chicago, IL, USA @@ -383,7 +427,8 @@ events: - title: SC — paper deadline start: '2026-04-08' url: /cloud-edge/venues/conferences/sc/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Chicago, IL, USA @@ -391,7 +436,8 @@ events: - title: SC — notification start: '2026-07-01' url: /cloud-edge/venues/conferences/sc/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Chicago, IL, USA @@ -399,7 +445,8 @@ events: - title: SC start: '2026-11-15' url: /cloud-edge/venues/conferences/sc/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-11-21' extendedProps: @@ -407,7 +454,8 @@ events: - title: HPDC — abstract deadline start: '2026-01-29' url: /cloud-edge/venues/conferences/hpdc/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Cleveland, OH, USA @@ -415,7 +463,8 @@ events: - title: HPDC — paper deadline start: '2026-02-05' url: /cloud-edge/venues/conferences/hpdc/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Cleveland, OH, USA @@ -423,7 +472,8 @@ events: - title: HPDC — notification start: '2026-03-31' url: /cloud-edge/venues/conferences/hpdc/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Cleveland, OH, USA @@ -431,7 +481,8 @@ events: - title: HPDC start: '2026-07-13' url: /cloud-edge/venues/conferences/hpdc/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-07-17' extendedProps: @@ -439,7 +490,8 @@ events: - title: MobiSys — abstract deadline start: '2025-11-28' url: /cloud-edge/venues/conferences/mobisys/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: location: Cambridge, UK @@ -447,7 +499,8 @@ events: - title: MobiSys — paper deadline start: '2025-12-05' url: /cloud-edge/venues/conferences/mobisys/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Cambridge, UK @@ -455,7 +508,8 @@ events: - title: MobiSys — notification start: '2026-03-02' url: /cloud-edge/venues/conferences/mobisys/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Cambridge, UK @@ -463,7 +517,8 @@ events: - title: MobiSys start: '2026-06-22' url: /cloud-edge/venues/conferences/mobisys/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-06-25' extendedProps: @@ -471,34 +526,39 @@ events: - title: SEC — abstract deadline start: '2026-05-08' url: /cloud-edge/venues/conferences/sec/ - color: '#f4a261' + color: '#f0d2a4' + textColor: '#4a3212' allDay: true extendedProps: cfp_url: https://acm-ieee-sec.org/2026/ - title: SEC — paper deadline start: '2026-05-08' url: /cloud-edge/venues/conferences/sec/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: cfp_url: https://acm-ieee-sec.org/2026/ - title: SEC — notification start: '2026-07-29' url: /cloud-edge/venues/conferences/sec/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: cfp_url: https://acm-ieee-sec.org/2026/ - title: SEC start: '2026-10-13' url: /cloud-edge/venues/conferences/sec/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-10-17' - title: CCGrid — paper deadline start: '2025-12-21' url: /cloud-edge/venues/conferences/ccgrid/ - color: '#e63946' + color: '#f2b3ac' + textColor: '#5a1f19' allDay: true extendedProps: location: Sydney, Australia @@ -506,7 +566,8 @@ events: - title: CCGrid — notification start: '2026-02-10' url: /cloud-edge/venues/conferences/ccgrid/ - color: '#2a9d8f' + color: '#b9dfd0' + textColor: '#14402f' allDay: true extendedProps: location: Sydney, Australia @@ -514,7 +575,8 @@ events: - title: CCGrid start: '2026-05-18' url: /cloud-edge/venues/conferences/ccgrid/ - color: '#457b9d' + color: '#bdd2ee' + textColor: '#1a3557' allDay: true end: '2026-05-22' extendedProps: diff --git a/site/content/cloud-edge/venues/conferences/OSDI/_index.md b/site/content/cloud-edge/venues/conferences/OSDI/_index.md index 98f5847..450912f 100644 --- a/site/content/cloud-edge/venues/conferences/OSDI/_index.md +++ b/site/content/cloud-edge/venues/conferences/OSDI/_index.md @@ -23,7 +23,7 @@ camera_ready: Jun 3, 2027 | | | |---|---| -| **ICORE Rank** | **A*** | +| **ICORE Rank** | **A\*** | | **Domains** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | | **Website** | [https://www.usenix.org/conference/osdi26](https://www.usenix.org/conference/osdi26) | | **Latest digest** | [OSDI 2025](/cloud-edge/digests/osdi-2025/) — 13 papers | diff --git a/site/content/cloud-edge/venues/conferences/SOSP/_index.md b/site/content/cloud-edge/venues/conferences/SOSP/_index.md index 92fbab6..7b22dfa 100644 --- a/site/content/cloud-edge/venues/conferences/SOSP/_index.md +++ b/site/content/cloud-edge/venues/conferences/SOSP/_index.md @@ -24,7 +24,7 @@ cfp_url: https://sigops.org/s/conferences/sosp/2026/cfp.html | | | |---|---| -| **ICORE Rank** | **A*** | +| **ICORE Rank** | **A\*** | | **Domains** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | | **Website** | [https://sigops.org/s/conferences/sosp/](https://sigops.org/s/conferences/sosp/) | | **Latest digest** | [SOSP 2025](/cloud-edge/digests/sosp-2025/) — 14 papers | diff --git a/site/content/cloud-edge/venues/conferences/_index.md b/site/content/cloud-edge/venues/conferences/_index.md index f209a7c..336e723 100644 --- a/site/content/cloud-edge/venues/conferences/_index.md +++ b/site/content/cloud-edge/venues/conferences/_index.md @@ -6,8 +6,8 @@ draft: false | Conference | Full name | ICORE | Domains | Abstract | Paper deadline | Notification | Event | Location | Digests | |---|---|---|---|---|---|---|---|---|---| -| [OSDI](/cloud-edge/venues/conferences/osdi/) | USENIX Symposium on Operating Systems Design and Implementation | **A*** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | Dec 1, 2026 | Dec 8, 2026 | Mar 16, 2027 | Jul 7-9, 2027 | Baltimore, MD, USA | 2 | -| [SOSP](/cloud-edge/venues/conferences/sosp/) | ACM Symposium on Operating Systems Principles | **A*** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | Mar 26, 2026 | Apr 1, 2026 | Jul 3, 2026 | Sep 29, 2026 - Oct 2, 2026 | Prague, Czechia | 2 | +| [OSDI](/cloud-edge/venues/conferences/osdi/) | USENIX Symposium on Operating Systems Design and Implementation | **A\*** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | Dec 1, 2026 | Dec 8, 2026 | Mar 16, 2027 | Jul 7-9, 2027 | Baltimore, MD, USA | 2 | +| [SOSP](/cloud-edge/venues/conferences/sosp/) | ACM Symposium on Operating Systems Principles | **A\*** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | Mar 26, 2026 | Apr 1, 2026 | Jul 3, 2026 | Sep 29, 2026 - Oct 2, 2026 | Prague, Czechia | 2 | | [EuroSys](/cloud-edge/venues/conferences/eurosys/) | European Conference on Computer Systems | **A** | `edge-and-cloud`, `operating-systems`, `distributed-systems` | Sep 17, 2026 | Sep 24, 2026 (Fall) | Jan 29, 2027 | Apr 19-23, 2027 | Rabat, Morocco | 2 | | [HPDC](/cloud-edge/venues/conferences/hpdc/) | IEEE International Symposium on High Performance Distributed Computing | **A** | `edge-and-cloud`, `hpc`, `distributed-systems` | Jan 29, 2026 | Feb 5, 2026 | Mar 31, 2026 | Jul 13, 2026 - Jul 16, 2026 | Cleveland, OH, USA | 2 | | [IPDPS](/cloud-edge/venues/conferences/ipdps/) | IEEE International Parallel and Distributed Processing Symposium | **A** | `edge-and-cloud`, `parallel-computing`, `distributed-systems` | Oct 1, 2026 | Oct 8, 2026 | Feb 2, 2027 | Jun 1-5, 2027 | Seattle, WA, USA | 2 | diff --git a/site/layouts/partials/extend_head.html b/site/layouts/partials/extend_head.html index f55e536..6c76e23 100644 --- a/site/layouts/partials/extend_head.html +++ b/site/layouts/partials/extend_head.html @@ -7,22 +7,30 @@ .fc table { display: table; overflow-x: visible; margin-bottom: 0; border-radius: 0; word-break: normal; } .fc th { min-width: 0; text-align: center; } .fc td:first-child, .fc th:first-child { width: auto; } - /* Map PaperMod dark theme to FullCalendar CSS variables */ - [data-theme="dark"] #pa-calendar { - --fc-page-bg-color: var(--theme); - --fc-neutral-bg-color: var(--entry); + /* Map the site palette onto FullCalendar's variables. The values are theme + variables, so one mapping covers both light and dark. */ + #pa-calendar { + --fc-page-bg-color: var(--entry); + --fc-neutral-bg-color: var(--code-bg); --fc-neutral-text-color: var(--secondary); --fc-border-color: var(--border); - --fc-today-bg-color: rgba(255, 220, 40, 0.08); - --fc-list-event-hover-bg-color: var(--entry); + --fc-today-bg-color: var(--accent-soft); + --fc-list-event-hover-bg-color: var(--accent-soft); --fc-button-text-color: var(--primary); --fc-button-bg-color: var(--entry); --fc-button-border-color: var(--border); - --fc-button-hover-bg-color: var(--tertiary); - --fc-button-hover-border-color: var(--border); - --fc-button-active-bg-color: var(--tertiary); - --fc-button-active-border-color: var(--border); + --fc-button-hover-bg-color: var(--code-bg); + --fc-button-hover-border-color: var(--accent-line); + --fc-button-active-bg-color: var(--accent-soft); + --fc-button-active-border-color: var(--accent-line); + background: var(--entry); + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 1rem; color: var(--primary); } + .fc .fc-daygrid-day-number, .fc .fc-col-header-cell-cushion { color: var(--secondary); } + .fc .fc-day-today .fc-daygrid-day-number { color: var(--accent); font-weight: 600; } + .fc-event { border-radius: 4px; } {{- end }} diff --git a/src/publish_assistant/generate_content.py b/src/publish_assistant/generate_content.py index a1b81ca..1c1da34 100644 --- a/src/publish_assistant/generate_content.py +++ b/src/publish_assistant/generate_content.py @@ -178,6 +178,12 @@ def load_venue_digests(papers_dir: Path) -> dict[str, list[dict]]: # Markdown body renderers # --------------------------------------------------------------------------- +def _bold_rank(rank: str) -> str: + """Bold a rank that may carry a literal asterisk. '**A***' closes the + emphasis on the second star, leaving the third one loose outside it.""" + return "**" + str(rank).replace("*", r"\*") + "**" + + def _conf_body(fm: dict, digests: list[dict] | None = None, base_path: str = "") -> str: rank = fm.get("icore_rank") or "—" hp = fm.get("homepage") or "" @@ -196,7 +202,7 @@ def _conf_body(fm: dict, digests: list[dict] | None = None, base_path: str = "") lines = [f"\n*{fm.get('full_name', '')}*\n"] lines += [ "| | |", "|---|---|", - f"| **ICORE Rank** | **{rank}** |", + f"| **ICORE Rank** | {_bold_rank(rank)} |", f"| **Domains** | {domains} |", ] if hp: @@ -471,7 +477,7 @@ def _conferences_section_body(venues: dict, icore: dict, deadlines: dict, link = f"[{acronym}]({base_path}/venues/conferences/{acronym.lower()}/)" abs_cell = abstract if (abstract and abstract != paper) else "" dig_cell = str(n_dig) if n_dig else "—" - lines.append(f"| {link} | {full_name} | **{rank}** | {domains} | {abs_cell} | {paper} | {notif} | {event} | {location} | {dig_cell} |") + lines.append(f"| {link} | {full_name} | {_bold_rank(rank)} | {domains} | {abs_cell} | {paper} | {notif} | {event} | {location} | {dig_cell} |") return "\n".join(lines) + "\n" @@ -503,6 +509,18 @@ def _journals_section_body(venues: dict, venue_digests: dict | None = None, base # Calendar events builder (for FullCalendar) # --------------------------------------------------------------------------- +# One chip colour per event kind. Backgrounds stay pale and dark ink is set +# explicitly, so a chip is legible on both the light and the dark site theme — +# FullCalendar's default white event text would not be. +EVENT_COLORS = { + "abstract": ("#f0d2a4", "#4a3212"), + "paper": ("#f2b3ac", "#5a1f19"), + "notification": ("#b9dfd0", "#14402f"), + "event": ("#bdd2ee", "#1a3557"), + "special": ("#d8c8f0", "#35215c"), +} + + def _calendar_events(venues: dict, deadlines: dict, base_path: str = "") -> list[dict]: events: list[dict] = [] for conf in venues.get("conferences") or []: @@ -515,15 +533,17 @@ def _calendar_events(venues: dict, deadlines: dict, base_path: str = "") -> list cycle_name = cycle.get("name") or "" prefix = f"{acronym} {cycle_name}".strip() cfp_url = cycle.get("cfp_url") or dl.get("cfp_url") or "" - for field, label, color in [ - ("abstract_deadline", "abstract deadline", "#f4a261"), - ("submission_deadline", "paper deadline", "#e63946"), - ("notification", "notification", "#2a9d8f"), + for field, label, kind in [ + ("abstract_deadline", "abstract deadline", "abstract"), + ("submission_deadline", "paper deadline", "paper"), + ("notification", "notification", "notification"), ]: + color, text_color = EVENT_COLORS[kind] iso = _parse_date(cycle.get(field) or "") if iso: ev: dict = {"title": f"{prefix} — {label}", "start": iso, - "url": url, "color": color, "allDay": True} + "url": url, "color": color, + "textColor": text_color, "allDay": True} props: dict = {} if location: props["location"] = location @@ -537,16 +557,17 @@ def _calendar_events(venues: dict, deadlines: dict, base_path: str = "") -> list start, end = _parse_date_range(dl.get("event_dates") or "") if start: + color, text_color = EVENT_COLORS["event"] ev = {"title": acronym, "start": start, "url": url, - "color": "#457b9d", "allDay": True} + "color": color, "textColor": text_color, "allDay": True} if end: ev["end"] = end if location: ev["extendedProps"] = {"location": location} events.append(ev) - # Journal special issue deadlines — one purple series, distinct from conferences - journal_color = "#7b2cbf" + # Journal special issue deadlines — one violet series, distinct from conferences + journal_color, journal_text_color = EVENT_COLORS["special"] for journal in venues.get("journals") or []: acronym = journal.get("acronym", "") url = f"{base_path}/venues/journals/{acronym.lower()}/" @@ -563,7 +584,7 @@ def _calendar_events(venues: dict, deadlines: dict, base_path: str = "") -> list if iso: ev = {"title": f"{acronym} SI — {si_title} — {label}", "start": iso, "url": url, "color": journal_color, - "allDay": True} + "textColor": journal_text_color, "allDay": True} if cfp_url: ev["extendedProps"] = {"cfp_url": cfp_url} events.append(ev)