/* dlstack — Swiss/International template Activate with theme.template: "swiss" in links.json. Tribute to Müller-Brockmann, Hofmann, Lohse — Akzidenz-Grotesk family (Archivo as a free variable substitute). All overrides scoped to :root[data-template="swiss"] so this file is inert otherwise. */ :root[data-template="swiss"] { --paper: oklch(0.985 0 0); --paper-2: oklch(0.955 0 0); --ink: oklch(0.10 0 0); --ink-2: oklch(0.18 0 0); --muted: oklch(0.42 0 0); --rule: oklch(0.10 0 0); --accent: #DC2127; --on-accent: oklch(0.99 0 0); --display: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif; --body: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif; --mono: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif; --radius: 0; } @media (prefers-color-scheme: dark) { :root[data-template="swiss"][data-theme="auto"] { --paper: oklch(0.10 0 0); --paper-2: oklch(0.16 0 0); --ink: oklch(0.985 0 0); --ink-2: oklch(0.92 0 0); --muted: oklch(0.62 0 0); --rule: oklch(0.985 0 0); } } :root[data-template="swiss"][data-theme="dark"] { --paper: oklch(0.10 0 0); --paper-2: oklch(0.16 0 0); --ink: oklch(0.985 0 0); --ink-2: oklch(0.92 0 0); --muted: oklch(0.62 0 0); --rule: oklch(0.985 0 0); } /* clean off the editorial paper grain */ :root[data-template="swiss"] body::before { display: none; } /* ───── marker bar ───── */ :root[data-template="swiss"] .marker { border-bottom: 2px solid var(--ink); font-weight: 700; letter-spacing: 0.06em; color: var(--ink); } :root[data-template="swiss"] .marker__brand { color: var(--ink); gap: 0.55rem; } :root[data-template="swiss"] .marker__brand .star { width: 12px; height: 12px; background: var(--accent); border-radius: 50%; display: inline-block; font-size: 0; transform: none; } :root[data-template="swiss"] .marker__year { color: var(--accent); } :root[data-template="swiss"] .theme { border-radius: 0; border-color: var(--ink); font-family: var(--display); font-weight: 700; text-transform: uppercase; color: var(--ink); background: transparent; padding: 6px 14px; } :root[data-template="swiss"] .theme:hover { background: var(--ink); color: var(--paper); } /* ───── hero — true poster ───── */ :root[data-template="swiss"] .hero__name { font-family: var(--display); font-style: normal; font-weight: 900; font-variation-settings: normal; text-transform: uppercase; letter-spacing: -0.045em; line-height: 0.84; } :root[data-template="swiss"] .hero__name em { font-style: normal; font-weight: 900; font-variation-settings: normal; color: var(--accent); } /* Replace typographic asterisk with primary geometric mark — solid red disc */ :root[data-template="swiss"] .hero__asterism { font-size: 0; color: transparent; width: clamp(3rem, 7vw, 5.5rem); height: clamp(3rem, 7vw, 5.5rem); background: var(--accent); border-radius: 50%; transform: none; animation: swiss-pop 900ms 200ms cubic-bezier(0.16, 1, 0.30, 1) both; } @keyframes swiss-pop { from { opacity: 0; transform: scale(0.4); } to { opacity: 1; transform: scale(1); } } :root[data-template="swiss"] .hero__tagline { font-family: var(--display); font-style: normal; font-weight: 600; font-variation-settings: normal; text-transform: uppercase; letter-spacing: 0.02em; color: var(--ink); font-size: clamp(1.15rem, 0.85rem + 1.4vw, 1.85rem); line-height: 1.1; max-width: 32ch; } :root[data-template="swiss"] .hero__tagline span { color: var(--accent); padding: 0 0.35em; } :root[data-template="swiss"] .hero__bio { color: var(--ink); font-weight: 400; font-family: var(--body); } /* ───── social ───── */ :root[data-template="swiss"] .social a { border-radius: 0; border-color: var(--ink); border-width: 1.5px; font-family: var(--display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; font-size: var(--fs-mini); padding: 9px 14px; color: var(--ink); } :root[data-template="swiss"] .social a:hover { background: var(--accent); border-color: var(--accent); color: var(--on-accent); transform: none; } /* ───── sections ───── */ :root[data-template="swiss"] .section__head { border-bottom: 4px solid var(--ink); padding-bottom: 0.85rem; } :root[data-template="swiss"] .section__numwrap small { color: var(--ink); font-weight: 700; font-family: var(--display); } :root[data-template="swiss"] .section__num { font-family: var(--display); font-style: normal; font-weight: 900; font-variation-settings: normal; color: var(--accent); letter-spacing: -0.05em; } :root[data-template="swiss"] .section__title { font-family: var(--display); font-style: normal; font-weight: 900; font-variation-settings: normal; text-transform: uppercase; letter-spacing: -0.025em; color: var(--ink); } :root[data-template="swiss"] .section__kicker { font-family: var(--display); font-style: normal; font-weight: 500; font-variation-settings: normal; text-transform: uppercase; letter-spacing: 0.1em; font-size: var(--fs-mini); color: var(--muted); } /* ───── cards ───── */ :root[data-template="swiss"] .card { border-radius: 0; border-color: var(--ink); background: var(--paper); transition: background 200ms cubic-bezier(0.22, 1, 0.36, 1), color 200ms cubic-bezier(0.22, 1, 0.36, 1); isolation: isolate; } :root[data-template="swiss"] .card:hover { transform: none; box-shadow: none; background: var(--ink); color: var(--paper); border-color: var(--ink); } :root[data-template="swiss"] .card:hover .card__title, :root[data-template="swiss"] .card:hover .card__desc, :root[data-template="swiss"] .card:hover .card__host { color: var(--paper); } :root[data-template="swiss"] .card::after { font-family: var(--display); font-weight: 700; color: var(--ink); } :root[data-template="swiss"] .card:hover::after { color: var(--accent); transform: translate(3px, -3px); } :root[data-template="swiss"] .card__title { font-family: var(--display); font-weight: 700; text-transform: uppercase; letter-spacing: -0.005em; } :root[data-template="swiss"] .card__desc { font-family: var(--body); color: var(--muted); } :root[data-template="swiss"] .card__host { font-family: var(--display); text-transform: uppercase; font-weight: 600; letter-spacing: 0.08em; } /* link card favicon */ :root[data-template="swiss"] .card--link .favicon { border-radius: 0; border-color: var(--ink); background: var(--paper); } :root[data-template="swiss"] .card--link:hover .favicon { background: var(--paper); border-color: var(--paper); } :root[data-template="swiss"] .card--link .favicon[data-fallback] { font-family: var(--display); font-weight: 900; color: var(--ink); } /* project card */ :root[data-template="swiss"] .card--project .card__title { font-family: var(--display); font-weight: 900; font-style: normal; font-variation-settings: normal; text-transform: uppercase; font-size: var(--fs-lg); line-height: 0.95; } /* featured — solid red, white text, true poster */ :root[data-template="swiss"] .card--featured { background: var(--accent); color: var(--on-accent); border-color: var(--ink); } :root[data-template="swiss"] .card--featured:hover { background: var(--ink); color: var(--paper); } :root[data-template="swiss"] .card--featured::before { font-family: var(--display); font-weight: 700; letter-spacing: 0.18em; } :root[data-template="swiss"] .card--featured .card__title { color: var(--on-accent); font-weight: 900; text-transform: uppercase; font-size: clamp(1.95rem, 1.30rem + 1.8vw, 2.8rem); } :root[data-template="swiss"] .card--featured:hover .card__title, :root[data-template="swiss"] .card--featured:hover .card__desc { color: var(--paper); } :root[data-template="swiss"] .card--featured .card__desc { color: color-mix(in oklch, var(--on-accent) 85%, transparent); } /* tags — square, monoline, all caps */ :root[data-template="swiss"] .tag { border-radius: 0; border-color: var(--ink); background: var(--paper); font-family: var(--display); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink); } :root[data-template="swiss"] .card:hover .tag { background: var(--paper); color: var(--ink); border-color: var(--paper); } :root[data-template="swiss"] .card--featured .tag { background: color-mix(in oklch, var(--on-accent) 14%, transparent); border-color: color-mix(in oklch, var(--on-accent) 30%, transparent); color: var(--on-accent); } :root[data-template="swiss"] .card--featured:hover .tag { background: color-mix(in oklch, var(--paper) 14%, transparent); border-color: color-mix(in oklch, var(--paper) 30%, transparent); color: var(--paper); } /* youtube */ :root[data-template="swiss"] .card--youtube { border-radius: 0; border-color: var(--ink); } :root[data-template="swiss"] .yt__play { border-radius: 0; border-width: 2px; background: rgba(0,0,0,0.7); } :root[data-template="swiss"] .yt:hover .yt__play { background: var(--accent); border-color: var(--accent); transform: translate(-50%, -50%) scale(1.05); } :root[data-template="swiss"] .yt__title { font-family: var(--display); font-weight: 700; text-transform: uppercase; letter-spacing: 0.02em; } /* portfolio */ :root[data-template="swiss"] .card--portfolio { border-radius: 0; border-color: var(--ink); } :root[data-template="swiss"] .card--portfolio:hover { background: var(--paper); color: var(--ink); } :root[data-template="swiss"] .card--portfolio:hover .portfolio__caption .card__title { color: var(--accent); } :root[data-template="swiss"] .portfolio__caption { border-top: 2px solid var(--ink); padding: 1.1rem 1.35rem 1.2rem; } :root[data-template="swiss"] .portfolio__caption .card__title { font-family: var(--display); font-weight: 900; font-variation-settings: normal; text-transform: uppercase; letter-spacing: -0.02em; font-size: var(--fs-lg); line-height: 1; } :root[data-template="swiss"] .portfolio__caption .card__desc { color: var(--muted); } /* clients */ :root[data-template="swiss"] .client__logo { border-radius: 0; border-color: var(--ink); background: var(--paper); } /* opt the client tile out of the global card hover-flip: the card has no chrome, so filling it with ink would hide the title text below the logo */ :root[data-template="swiss"] .card--client:hover { background: transparent; color: var(--ink); border-color: transparent; } :root[data-template="swiss"] .card--client:hover .client__title { color: var(--accent); } :root[data-template="swiss"] .card--client:hover .client__logo { background: var(--ink); border-color: var(--ink); transform: none; box-shadow: none; } :root[data-template="swiss"] .card--client:hover .client__logo img.is-favicon { filter: invert(1); } :root[data-template="swiss"] .client__logo[data-fallback] { font-family: var(--display); font-weight: 900; color: var(--ink); } :root[data-template="swiss"] .card--client:hover .client__logo[data-fallback] { color: var(--paper); } :root[data-template="swiss"] .client__title { font-family: var(--display); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; font-size: var(--fs-mini); color: var(--ink); } /* footer */ :root[data-template="swiss"] .foot { border-top: 2px solid var(--ink); color: var(--ink); font-family: var(--display); font-weight: 600; } :root[data-template="swiss"] .foot__mark { font-family: var(--display); font-style: normal; text-transform: uppercase; font-weight: 900; color: var(--accent); font-size: var(--fs-md); letter-spacing: 0.08em; } /* selection */ :root[data-template="swiss"] ::selection { background: var(--accent); color: var(--on-accent); } /* override editorial entrance for the asterism (it spins; Swiss should pop) */ :root[data-template="swiss"] .hero__asterism { animation: swiss-pop 900ms 200ms cubic-bezier(0.16, 1, 0.30, 1) both; }