.section { padding: var(--section) 0 0; } .shell { width: var(--shell); margin: 0 auto; } .title { margin-bottom: clamp(32px, 4.5vw, 56px); font: 700 clamp(28px, 4.2vw, 60px) / 1.05 var(--font-head); letter-spacing: -0.045em; } /* Skills: two columns of rows divided by a rule, no boxes. */ .skills { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 clamp(32px, 6vw, 96px); } .skill { display: flex; flex-direction: column; gap: 10px; padding: 28px 0 36px; border-top: 1px solid var(--line); } .skill h3, .entry h3 { font: 700 clamp(18px, 1.8vw, 23px) / 1.2 var(--font-head); letter-spacing: -0.04em; } .skill p { max-width: 52ch; color: var(--ink-2); } .tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; } .tags li { padding: 3px 11px; border-radius: 999px; background: var(--chip); font-size: 13.5px; line-height: 1.5; } /* Experience */ .entry { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(0, 3fr); gap: 24px 32px; padding: 32px 0 40px; border-top: 1px solid var(--line); } .meta { color: var(--muted); font-size: 15px; } .list { display: grid; gap: 10px; margin-top: 18px; max-width: 66ch; } .list li { position: relative; padding-left: 22px; } .list li::before { content: ''; position: absolute; left: 2px; top: 0.7em; width: 7px; height: 7px; border-radius: 1px; background: var(--z); } /* Education, languages, interests */ .columns { display: grid; grid-template-columns: 1.4fr 1fr 1.2fr; gap: 40px clamp(32px, 5vw, 72px); padding-top: 28px; border-top: 1px solid var(--line); } .label { margin-bottom: 14px; font: 700 17px/1.2 var(--font-head); letter-spacing: -0.03em; } .stack { display: grid; gap: 22px; } .strong { font-weight: 600; } .languages { display: grid; gap: 8px; } .languages div { display: flex; justify-content: space-between; gap: 16px; padding-bottom: 8px; border-bottom: 1px solid var(--line); } .languages dd { color: var(--muted); } /* Contact: the one inverted band, closing the page. */ .contact { margin-top: var(--section); padding: clamp(72px, 9vw, 128px) 0 40px; background: var(--band-bg); color: var(--band-ink); } .contactTitle { font: 700 clamp(28px, 4.2vw, 60px) / 1.05 var(--font-head); letter-spacing: -0.045em; } .contactLead { margin-top: 16px; color: var(--band-2); } .mail { display: inline-block; margin-top: clamp(28px, 4vw, 48px); font: 700 clamp(17px, 5vw, 76px) / 1.08 var(--font-head); letter-spacing: -0.05em; overflow-wrap: anywhere; text-decoration: none; background: linear-gradient(var(--z), var(--z)) left bottom / 100% 0.08em no-repeat; transition: background-size 0.25s, color 0.25s; } .mail:hover { background-size: 100% 100%; } .contacts { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0 32px; margin-top: clamp(56px, 7vw, 96px); } .contacts li { display: flex; flex-direction: column; gap: 2px; padding: 18px 0; border-top: 1px solid var(--band-line); } .contacts span { font-size: 14px; color: var(--band-3); } .contacts a { text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 4px; text-decoration-color: var(--band-underline); overflow-wrap: anywhere; } .contacts a:hover { text-decoration-color: currentColor; } .legal { margin-top: clamp(48px, 6vw, 80px); font-size: 14px; color: var(--band-3); } @media (max-width: 900px) { .skills { grid-template-columns: minmax(0, 1fr); } .columns { grid-template-columns: minmax(0, 1fr); } } @media (max-width: 760px) { .legal { padding-right: 76px; /* keeps clear of the floating gizmo */ } } @media (max-width: 700px) { .entry { grid-template-columns: minmax(0, 1fr); gap: 10px; } }