/* ============================================================================ 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 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: (Author et al., 2021) */ 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; } }