/* =========================================================================
 * Helvetica Neue — THE SpiderX face, site and app (2026-09-22).
 *
 * Self-hosted from assets/fonts/helvetica-neue/. Declared under the real
 * family name on purpose: if a file 404s, macOS and iOS fall back to their
 * own installed Helvetica Neue rather than to a grotesque that reflows the
 * layout. Windows and Linux fall through to Helvetica → Arial.
 *
 * WEIGHTS. The family ships eight cuts and no semibold, so the CSS weights
 * the app already writes have to land somewhere deliberate:
 *
 *   100  UltraLight      600  → resolves to Bold (700)
 *   200  Thin            700  Bold
 *   300  Light           800  Heavy
 *   400  Roman           900  Black
 *   500  Medium
 *
 * 600 is the weight the app reaches for most (every `.display` heading), and
 * there is no 600 face to load. Rather than leave it to the font-matching
 * algorithm — which walks UP from 600 and lands on Bold — Medium is declared
 * across `500 600`. Helvetica Bold at heading sizes is considerably heavier
 * than the Calibre Semibold these rules were drawn against, and would have
 * reset the weight balance of every screen; Medium holds it. Anything that
 * genuinely wants Helvetica Bold asks for 700 and gets it.
 *
 * Every cut is .otf except the regular italic, which the family ships as
 * .ttf — hence the one `truetype` format hint below.
 *
 * This sheet declares the faces and the --hn stack, nothing else. The role
 * tokens (--sans / --mono / --serif) live in typography.css, which imports
 * this file; landing.html links this file directly and uses --hn.
 * ========================================================================= */

/* UltraLight 100 */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueUltraLight.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueUltraLight.otf') format('opentype');font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueUltraLightItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueUltraLightItalic.otf') format('opentype');font-weight:100;font-style:italic;font-display:swap}

/* Thin 200 */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueThin.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueThin.otf') format('opentype');font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueThinItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueThinItalic.otf') format('opentype');font-weight:200;font-style:italic;font-display:swap}

/* Light 300 */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueLight.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueLight.otf') format('opentype');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueLightItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueLightItalic.otf') format('opentype');font-weight:300;font-style:italic;font-display:swap}

/* Roman 400 — body */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueRoman.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueRoman.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueItalic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}

/* Medium 500, and 600 with it — see the WEIGHTS note above. */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueMedium.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueMedium.otf') format('opentype');font-weight:500 600;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueMediumItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueMediumItalic.otf') format('opentype');font-weight:500 600;font-style:italic;font-display:swap}

/* Bold 700 */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueBold.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueBold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueBoldItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueBoldItalic.otf') format('opentype');font-weight:700;font-style:italic;font-display:swap}

/* Heavy 800 */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueHeavy.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueHeavy.otf') format('opentype');font-weight:800;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueHeavyItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueHeavyItalic.otf') format('opentype');font-weight:800;font-style:italic;font-display:swap}

/* Black 900 */
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueBlack.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueBlack.otf') format('opentype');font-weight:900;font-style:normal;font-display:swap}
@font-face{font-family:'Helvetica Neue';src:url('fonts/helvetica-neue/HelveticaNeueBlackItalic.woff2') format('woff2'),url('fonts/helvetica-neue/HelveticaNeueBlackItalic.otf') format('opentype');font-weight:900;font-style:italic;font-display:swap}

:root{--hn:'Helvetica Neue','Helvetica',Arial,system-ui,sans-serif}
