ljvmiranda921's picture
Add small note regarding interactive charts
99411a2
Raw
History Blame Contribute Delete
12.4 kB
/* ============================================================================
Site-specific styles for "Multilinguality at the Edge".
Base typography, tokens, and components (.btn, .panel, .caption) come from
chia.css — this file only adds page-specific layout and interactives.
============================================================================ */
section { scroll-margin-top: 1rem; }
/* Shown only on mobile (narrow viewport or touch-only device). */
.mobile-note { display: none; font-style: italic; margin: 0 0 1.5rem; }
@media (max-width: 820px), (hover: none) and (pointer: coarse) {
.mobile-note { display: block; }
}
/* Subheadings ("How are edge LMs developed?", pipeline stage titles):
Univers Light, leading 110% of font size, tracking -5 (-0.005em). */
h3 {
font-family: var(--font-body);
font-size: 1.35rem;
font-weight: 300;
line-height: 1.1;
letter-spacing: -0.005em;
color: var(--ink);
margin: 2.2rem 0 0.6rem;
}
/* ---------- header ---------- */
.letterhead { display: flex; align-items: center; gap: 1.25rem; margin-bottom: 2rem; }
.letterhead img { height: 44px; width: auto; }
.site-header .subtitle {
font-family: var(--font-heading);
font-size: 1.35rem;
font-weight: 400;
color: var(--ink);
margin: 0 0 1.25rem;
text-wrap: balance;
}
.site-header .authors { font-size: 1.05rem; margin: 0 0 0.5rem; }
.site-header .authors > a { font-weight: 400; }
.site-header .authors .aff { color: var(--muted); font-size: 0.95rem; }
.site-header .top-links { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 1.6rem 0 2.6rem; }
.site-header .top-links .btn { border-bottom-width: 1.5px; } /* keep .btn border on <a> hover */
/* ---------- abstract (teaser + toggle-able full abstract) ---------- */
.abstract { font-size: 1.08rem; }
details.abstract-full { margin-top: 1.4rem; }
details.abstract-full summary {
cursor: pointer;
font-family: var(--font-heading);
font-weight: 600;
color: var(--blue);
list-style: none;
}
details.abstract-full summary::-webkit-details-marker { display: none; }
details.abstract-full summary::before { content: "\25B8 "; }
details.abstract-full[open] summary::before { content: "\25BE "; }
.abstract-box { margin-top: 1rem; }
.abstract-box p { font-size: 0.92rem; line-height: 1.7; color: var(--muted); margin: 0; }
/* ---------- callouts ----------
Big Univers Light statement in brand blue, used to emphasise a
single-sentence thesis (the research question, the approach). Headline
spec: leading tracks the font size (110% at this scale), tracking -5
(-0.005em). */
.callout {
font-size: 1.6rem;
line-height: 1.1;
font-weight: 300;
color: var(--blue);
margin: 1.6rem 0;
letter-spacing: -0.005em;
text-wrap: balance;
}
@media (max-width: 640px) {
.callout { font-size: 1.3rem; }
}
/* ---------- inline citation ----------
Use: <a class="cite" href="...">(Author et al., 2021)</a> */
a.cite { font-size: 0.88em; white-space: nowrap; margin-left: 0.2em; }
/* ---------- figures ---------- */
.placeholder {
color: var(--muted);
text-align: center;
padding: 2rem 0;
opacity: 0.7;
font-size: 0.9rem;
}
.caption strong { color: var(--ink); margin-right: 0.35em; }
/* Square figure + caption-on-the-right row. Figure is intentionally wider
than the caption so the image reads as the lead element. */
.figure-row {
display: grid;
grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
gap: 1.75rem;
align-items: center;
margin: 1.75rem 0;
}
.figure-row .figure-mount {
aspect-ratio: 1 / 1;
min-height: 0;
display: flex;
align-items: center;
justify-content: center;
margin: 0;
padding: 1rem;
}
@media (max-width: 640px) {
.figure-row { grid-template-columns: 1fr; gap: 1rem; }
.figure-row .figure-mount { max-width: 280px; margin: 0 auto; }
}
/* Two figures side-by-side, each with its own caption directly below. */
.figure-pair {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.75rem;
margin: 2rem 0;
}
.figure-pair figure { margin: 0; display: flex; flex-direction: column; }
.figure-pair .figure-mount {
min-height: 220px;
display: flex;
align-items: center;
justify-content: center;
padding: 0.5rem;
margin: 0 0 0.75rem;
}
.figure-pair .figure-mount.svg-loaded { align-items: stretch; justify-content: stretch; }
.figure-mount svg { display: block; width: 100%; height: auto; max-width: 100%; }
@media (max-width: 640px) {
.figure-pair { grid-template-columns: 1fr; gap: 1.25rem; }
}
/* Figure on the left + caption on the right inside each analysis tab. */
.analysis-figure {
display: grid;
grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
gap: 1.75rem;
align-items: start;
margin: 1.5rem 0 0;
}
.analysis-figure .figure-mount {
min-height: 320px;
display: flex;
align-items: center;
justify-content: center;
padding: 0.5rem;
margin: 0;
}
.analysis-figure figcaption { padding-top: 0.25rem; }
@media (max-width: 820px) {
.analysis-figure { grid-template-columns: 1fr; gap: 1rem; }
}
/* ---------- fig-model-sizes interactive bits ---------- */
#fig-2b .model-name text { transition: fill 100ms ease; }
#fig-2b .model-name:hover text { fill: var(--blue); text-decoration: underline; }
#fig-2b .model-dot { transition: fill 100ms ease; }
.model-tooltip {
position: fixed;
z-index: 1000;
max-width: 320px;
padding: 0.7rem 0.85rem;
background: var(--white);
border: 1.5px solid var(--ink);
box-shadow: var(--shadow-sm);
font-size: 0.88rem;
line-height: 1.4;
opacity: 0;
pointer-events: none;
transition: opacity 120ms ease;
}
.model-tooltip.is-visible { opacity: 1; pointer-events: auto; }
.model-tooltip .model-tooltip-name {
font-family: var(--font-heading);
font-weight: 600;
font-size: 0.95rem;
color: var(--blue);
margin-bottom: 0.35rem;
}
.model-tooltip .model-tooltip-desc .muted { font-style: italic; }
.model-tooltip .model-tooltip-links {
margin-top: 0.55rem;
padding-top: 0.5rem;
border-top: 1px dashed var(--rule);
font-size: 0.85rem;
}
.model-tooltip a + a { margin-left: 0.6rem; }
/* ---------- fig-literature-clusters interactivity ---------- */
#fig-how svg .cluster-group,
#fig-how svg .cluster-label { transition: opacity 150ms ease; }
#fig-how svg.has-active .cluster-group:not(.is-active),
#fig-how svg.has-active .cluster-label:not(.is-active) { opacity: 0.12; }
#fig-how svg.has-active .cluster-noise { opacity: 0.08; }
#fig-how svg .cluster-group.is-active { opacity: 1; }
.cluster-tooltip {
position: fixed;
z-index: 1000;
max-width: 360px;
padding: 0.7rem 0.85rem 0.85rem;
background: var(--white);
border: 1.5px solid var(--ink);
box-shadow: var(--shadow-sm);
font-size: 0.86rem;
line-height: 1.4;
opacity: 0;
pointer-events: none;
transition: opacity 120ms ease;
}
.cluster-tooltip.is-visible { opacity: 1; pointer-events: auto; }
.cluster-tooltip-head { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.4rem; }
.cluster-tooltip-dot { width: 10px; height: 10px; border-radius: 50%; border: 1px solid var(--ink); }
.cluster-tooltip-count {
font-family: var(--font-heading);
font-weight: 600;
font-size: 0.8rem;
color: var(--muted);
}
.cluster-tooltip-kws { display: flex; flex-wrap: wrap; gap: 0.3rem 0.4rem; margin-bottom: 0.65rem; }
.cluster-tooltip-kw {
font-size: 0.78rem;
background: var(--panel);
padding: 0.1rem 0.45rem;
}
.cluster-tooltip-reps-label {
font-family: var(--font-heading);
font-weight: 600;
font-size: 0.8rem;
color: var(--muted);
margin-bottom: 0.3rem;
}
.cluster-tooltip-reps { list-style: none; margin: 0; padding: 0; }
.cluster-tooltip-reps li { margin: 0.2rem 0; font-size: 0.85rem; line-height: 1.35; }
/* ---------- fig-domain-network interactivity ---------- */
#fig-where svg .where-edge,
#fig-where svg .where-tech,
#fig-where svg .where-domain,
#fig-where svg .where-label,
#fig-where svg .where-leader {
transition: opacity 140ms ease, stroke-width 140ms ease, fill 140ms ease;
}
#fig-where svg.has-active .where-edge,
#fig-where svg.has-active .where-tech,
#fig-where svg.has-active .where-label,
#fig-where svg.has-active .where-leader,
#fig-where svg.has-active .where-domain { opacity: 0.2; }
#fig-where svg.has-active .where-edge.is-active,
#fig-where svg.has-active .where-tech.is-active,
#fig-where svg.has-active .where-label.is-active,
#fig-where svg.has-active .where-leader.is-active,
#fig-where svg.has-active .where-domain.is-active { opacity: 1; }
.where-detail { margin-top: 1rem; }
.where-detail-head {
font-family: var(--font-heading);
font-size: 1rem;
font-weight: 600;
margin: 0 0 0.55rem;
}
.where-detail-list { margin: 0; padding-left: 1.2rem; }
.where-detail-list li { margin: 0.35rem 0; font-size: 0.92rem; line-height: 1.4; }
.where-detail-year { color: var(--muted); font-style: italic; }
/* ---------- pipeline hero ---------- */
#pipeline-hero { margin: 2.5rem 0 3rem; }
/* Pipeline figure: borderless mount. An animated wireframe mesh canvas sits
behind the stack (see pipeline-mesh.js). */
#pipeline-figure { position: relative; min-height: 260px; padding: 1.25rem 0; }
.pipeline-mesh-canvas {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
display: block;
z-index: 0;
pointer-events: none;
}
.pipeline-stack {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
gap: 1.75rem;
width: 100%;
}
/* ---- requirement bands (above + below the strip) ---- */
.pipeline-band-wrap { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; }
.pipeline-band-top { order: 0; }
.pipeline-band-bottom { order: 2; }
.pipeline-band {
font-family: var(--font-heading);
font-size: 0.85rem;
font-weight: 600;
color: var(--muted);
text-align: center;
}
.pipeline-reqs { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem; }
/* Requirement toggles are chia .btn elements (class set in pipeline.js);
only size down for the dense band. */
.btn.pipeline-req { font-size: 0.82rem; padding: 0.28rem 0.7rem; min-width: 5.5rem; }
/* ---- pipeline strip: one continuous horizontal bar ---- */
.pipeline-strip {
order: 1;
display: flex;
width: 100%;
border: 1.5px solid var(--ink);
box-shadow: var(--shadow-sm);
background: var(--white);
}
.pipeline-segment {
flex: 1 1 0;
min-width: 0;
font-family: var(--font-heading);
font-weight: 500;
font-size: 0.95rem;
color: var(--ink);
background: transparent;
border: 0;
padding: 1rem 0.75rem;
cursor: pointer;
text-align: center;
transition: color 120ms ease, background 120ms ease;
}
.pipeline-segment + .pipeline-segment { border-left: 1.5px solid var(--ink); }
.pipeline-segment:hover { color: var(--blue); background: var(--panel); }
.pipeline-segment.is-active { color: var(--white); background: var(--blue); }
@media (max-width: 640px) {
.pipeline-segment { font-size: 0.78rem; padding: 0.85rem 0.4rem; }
.btn.pipeline-req { min-width: 0; }
}
#pipeline-detail h3 { margin-top: 0; }
#pipeline-detail .refs {
margin-top: 1.5rem;
padding-top: 1rem;
border-top: 1px solid var(--rule);
font-size: 0.88rem;
color: var(--muted);
}
#pipeline-detail .refs ol { padding-left: 1.5rem; margin: 0.5rem 0 0; }
#pipeline-detail .refs li { margin: 0.25rem 0; }
sup.ref-marker a { font-family: var(--font-mono); font-size: 0.72rem; border-bottom: none; }
.chart-mount { min-height: 340px; display: flex; align-items: center; justify-content: center; }
.placeholder-text { color: var(--muted); }
/* ---------- recommendations ---------- */
.recs-list { margin: 0; padding-left: 1.5rem; }
.recs-list li { margin: 0.6rem 0; }
/* ---------- citation ---------- */
.bibtex-wrap { position: relative; }
.bibtex {
font-family: var(--font-mono);
font-size: 0.85rem;
overflow-x: auto;
white-space: pre;
margin: 0;
line-height: 1.5;
padding-right: 5.5rem; /* room for the copy button */
}
.copy-btn { position: absolute; top: 0.75rem; right: 0.75rem; }
.copy-btn.is-copied { background: var(--blue); color: var(--white); }
/* ---------- discussion ---------- */
.giscus { width: 100%; }
.giscus-frame { width: 100%; border: 0; }
/* ---------- responsive ---------- */
@media (max-width: 640px) {
h1 { font-size: 2.25rem; }
h2 { font-size: 1.4rem; }
.site-header .subtitle { font-size: 1.15rem; }
}