/*! Based on HyunSeob/resume (https://github.com/HyunSeob/resume)
 *  MIT License, Copyright (c) 2018 HyunSeob. See licenses/HyunSeob-MIT.txt
 *  Font and other notices: THIRD_PARTY_NOTICES.md */
@font-face {
  font-family: Pretendard;
  src: url("assets/fonts/Pretendard-Regular.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: Pretendard;
  src: url("assets/fonts/Pretendard-Medium.woff2") format("woff2");
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

@font-face {
  font-family: Pretendard;
  src: url("assets/fonts/Pretendard-Bold.woff2") format("woff2");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

:root {
  --ink: #222;
  --accent: #9bc86a;
  --link: #4d722f;
  --rule: #eee;
  font: 16px / 1.15 Pretendard, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: #fff;
  -webkit-text-size-adjust: 100%;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  padding-bottom: 4rem;
  letter-spacing: -0.3px;
  word-break: keep-all;
  -webkit-font-smoothing: antialiased;
}

body::before {
  content: "";
  position: fixed;
  inset: 0 0 auto;
  height: 10px;
  background: var(--accent);
  z-index: 2;
}

::selection { background: #e7f2d9; }

a {
  color: var(--link);
  text-underline-offset: 0.14em;
  transition: color 180ms ease;
}

a:hover { color: #365621; }
a:focus-visible { outline: 2px solid var(--link); outline-offset: 4px; }

.resume { max-width: 50rem; margin-inline: auto; padding-inline: 2rem; }
.resume > section + section { border-top: 1px solid var(--rule); }
.intro { padding-top: 3.35rem; }

h1, h2, h3, h4, h5 { font-weight: 700; }

h1 {
  margin: 0 0 3.35rem;
  font-size: 5rem;
  line-height: 1.1;
  letter-spacing: -0.3px;
}

h2 { margin: 4rem 0 2rem; font-size: 3rem; }
h3, h4 { margin: 0 0 1rem; font-size: 2rem; }
h5 { margin: 0 0 0.5rem; font-size: 1.3rem; color: #333; }
p { margin: 0 0 1rem; font-size: 1.1rem; line-height: 1.4; }
.accent { color: var(--accent); }
.lead { font-size: 2rem; line-height: 1.4; font-weight: 500; }

.experience {
  display: grid;
  grid-template-columns: 18rem minmax(0, 1fr);
  padding-block: 1.5rem;
}

.experience-summary { padding-right: 1rem; }
.experience-summary p { font-size: 1rem; line-height: 1.4; margin-bottom: 0.4rem; }
.experience-summary .repository { margin-top: 1rem; }
.work { padding-block: 1rem; }
.work:first-child { padding-top: 0; }
.work:last-child { padding-bottom: 0; }
.work + .work { margin-top: 0.25rem; }
.date, .position { display: block; }
.date { margin-bottom: 1.5rem; }

ul { padding: 0; margin: 0 0 1rem; list-style: none; font-size: 1.1rem; }
li { position: relative; padding: 0.2rem 0 0.2rem 1rem; line-height: 1.4; }
li::before { content: "•"; position: absolute; left: 0; color: var(--accent); }
.contributions li + li { margin-top: 0.6rem; }
.contributions a { white-space: nowrap; }

.entry { padding-block: 1.5rem; }
.entry p:last-child, .entry ul:last-child { margin-bottom: 0; }
.entry .position { margin-bottom: 0.25rem; }
.contact-list a { overflow-wrap: anywhere; }
.contact-list { margin-bottom: 1.5rem; }
.availability { color: #555; margin-bottom: 0.5rem; }
.intro-contact { display: flex; flex-wrap: wrap; gap: 0.35rem 1.25rem; font-size: 0.95rem; line-height: 1.5; }

.skip-link { position: fixed; left: 1rem; top: -5rem; padding: 0.7rem 1rem; background: white; z-index: 3; }
.skip-link:focus { top: 1rem; }

@media (max-width: 960px) {
  :root { font-size: 14px; }
  .intro { padding-top: 2.01rem; }
  h1 { font-size: 3rem; margin-bottom: 2.01rem; }
  .lead { font-size: 1.5rem; }
  h4 { font-size: 1.5rem; }
  .experience { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .experience-summary { padding-right: 0; }
  .experience-summary .date { margin-bottom: 0.5rem; }
}

@media (max-width: 420px) {
  h1 { font-size: clamp(2rem, 9.6vw, 3rem); }
  h2 { font-size: 2.5rem; }
}

@media (prefers-reduced-motion: reduce) {
  a { transition: none; }
}

@media print {
  :root { font-size: 10pt; }
  body { padding-bottom: 0; }
  body::before, .skip-link { display: none; }
  .resume { max-width: none; padding: 0; }
  .intro { padding-top: 0; }
  h1 { font-size: 3rem; margin-bottom: 1.5rem; }
  .lead { font-size: 1.3rem; }
  h2 { margin-top: 2rem; font-size: 2rem; }
  h3, h4 { font-size: 1.5rem; }
  .experience { grid-template-columns: 13rem minmax(0, 1fr); padding-block: 1.5rem; }
  .entry { padding-block: 1.5rem; }
  h2, h3, h4, h5 { break-after: avoid; }
  li, .entry { break-inside: avoid; }
  a { color: inherit; }
  @page { margin: 16mm; }
}
