:root {
  --paper:#fffdf8;
  --canvas:#e7e8e1;
  --ink:#1c201d;
  --body:#444d46;
  --muted:#69736b;
  --line:#d8ddd5;
  --accent:#41654a;
  --accent-warm:#ad5f3c;
  --shadow:0 16px 48px rgba(32,35,31,.12);
  --page-width:8.5in;
  --page-height:11in;
  --label-column:1.05in;
  --column-gap:.28in;
  --section-space:.18in;
  --print-section-space:.14in;
  --skill-label-column:.95in;
  --skill-column-gap:.18in;
  --page-inset:.64in;
  --print-page-inset:.58in;
  --page-padding:.58in var(--page-inset) .5in;
  --hairline:.5px solid var(--line);
  --strong-rule:1.5px solid var(--ink);
  --job-title-size:11pt;
  --company-size:9pt;
}

* {
  box-sizing:border-box;
}

html {
  background:var(--canvas);
}

body {
  margin:0;
  color:var(--ink);
  background:var(--canvas);
  font-family:"Avenir Next",Avenir,"Trebuchet MS",sans-serif;
  font-size:9pt;
  line-height:1.46;
  text-rendering:optimizeLegibility;
}

a {
  color:inherit;
  text-decoration-color:var(--line);
  text-underline-offset:3px;
}

a:hover {
  color:var(--accent);
}

h1,h2,h3,p,ul {
  margin:0;
}

.resume-nav {
  display:flex;
  justify-content:space-between;
  width:min(var(--page-width),calc(100% - 56px));
  margin:0 auto;
  padding:24px 0 18px;
  color:var(--muted);
  font-size:12px;
}

.resume-nav a,.resume-nav button {
  font-weight:700;
}

.resume-nav a {
  text-decoration:none;
}

.resume-nav button {
  padding:0;
  border:0;
  color:inherit;
  background:transparent;
  font:inherit;
  cursor:pointer;
}

.resume-nav button:hover,.resume-nav button:focus-visible {
  color:var(--accent);
}

.resume-pages {
  padding-bottom:44px;
}

.resume-page {
  position:relative;
  display:flex;
  flex-direction:column;
  width:min(var(--page-width),100%);
  height:var(--page-height);
  margin:0 auto 32px;
  padding:var(--page-padding);
  overflow:hidden;
  background:var(--paper);
  box-shadow:var(--shadow);
}

.resume-header {
  display:flex;
  justify-content:space-between;
  gap:36px;
  padding-bottom:.25in;
  border-bottom:var(--strong-rule);
}

h1 {
  margin-bottom:7px;
  font-size:29pt;
  font-weight:800;
  letter-spacing:-.04em;
  line-height:.95;
}

.resume-title {
  max-width:4.8in;
  color:var(--accent);
  font-size:10pt;
  font-weight:700;
  line-height:1.2;
}

address {
  color:var(--body);
  font-size:7.3pt;
  font-style:normal;
  line-height:1.55;
  text-align:right;
}

h2 {
  position:relative;
  top:2px;
  color:var(--accent-warm);
  font-size:6.8pt;
  font-weight:700;
  letter-spacing:.18em;
  line-height:1;
  text-transform:uppercase;
}

.profile,.skills,.education,.open-source {
  display:grid;
  grid-template-columns:var(--label-column) minmax(0,1fr);
  column-gap:var(--column-gap);
}

.profile {
  padding:.22in 0;
  border-bottom:var(--hairline);
}

.profile p {
  position:relative;
  top:-1px;
  max-width:5.35in;
  color:var(--body);
  font-size:9.5pt;
  line-height:1.58;
}

.experience {
  display:grid;
  grid-template-columns:var(--label-column) minmax(0,1fr);
  row-gap:.16in;
  column-gap:var(--column-gap);
  padding-top:.22in;
}

.experience > h2 {
  grid-column:1;
  grid-row:1 / span 2;
}

.experience > .job {
  grid-column:2;
}

.job {
  padding:.12in 0;
  border-top:var(--hairline);
}

.job:first-of-type {
  padding-top:0;
  border-top:0;
}

.job-header {
  display:flex;
  justify-content:space-between;
  gap:18px;
}

.job h3 {
  font-size:var(--job-title-size);
  font-weight:700;
  line-height:1.15;
}

.company {
  margin-top:3px;
  color:var(--accent);
  font-size:var(--company-size);
  font-weight:700;
}

.resume-page:first-child .job:nth-of-type(2) .company::after {
  content:"Acquired by Verizon";
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:7.2pt;
  font-weight:600;
}

.dates {
  flex:0 0 1.45in;
  color:var(--body);
  font-size:7.4pt;
  line-height:1.45;
  text-align:right;
}

.dates span {
  color:var(--muted);
}

.continuation-header {
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:24px;
  padding-bottom:var(--section-space);
  border-bottom:var(--strong-rule);
}

.continuation-header strong {
  font-size:14pt;
  font-weight:700;
  letter-spacing:-.04em;
  line-height:1;
}

.continuation-header span {
  color:var(--muted);
  font-size:6.8pt;
  font-weight:700;
  letter-spacing:.18em;
  line-height:1.2;
  text-align:right;
  text-transform:uppercase;
}

.role-history {
  margin:.1in 0 .08in;
  padding:.06in 0;
  border-top:var(--hairline);
  border-bottom:var(--hairline);
}

.role-history div {
  display:flex;
  justify-content:space-between;
  gap:18px;
  padding:1px 0;
  font-size:7.5pt;
  line-height:1.28;
}

.role-history strong {
  font-weight:800;
}

.role-history span {
  color:var(--muted);
  text-align:right;
}

.job ul {
  padding:.1in 0 0;
  color:var(--body);
  list-style-position:outside;
}

.job li {
  padding:4px 0;
  font-size:8.4pt;
  line-height:1.42;
}

li:only-child {
  list-style-type:none;
}

.lower-grid {
  padding-top:var(--section-space);
  border-top:var(--hairline);
}

.skills {
  row-gap:.16in;
}

.education {
  row-gap:.06in;
  margin-top:var(--section-space);
  padding-top:var(--section-space);
  border-top:var(--hairline);
}

.skills > h2 {
  grid-column:1;
  grid-row:1 / span 6;
}

.education > h2 {
  grid-column:1;
  grid-row:1 / span 2;
}

.skills > .skill-row,.education > h3,.education > p {
  grid-column:2;
}

.open-source {
  padding:var(--section-space) 0;
  border-top:var(--hairline);
}

.open-source > h2 {
  grid-column:1;
}

.open-source > p {
  grid-column:2;
  color:var(--body);
  font-size:8pt;
  line-height:1.43;
}

.skill-row {
  display:grid;
  grid-template-columns:var(--skill-label-column) minmax(0,1fr);
  column-gap:var(--skill-column-gap);
  padding:0 0 .12in;
  border-bottom:var(--hairline);
  align-items:start;
}

.skills > .skill-row:last-child {
  border-bottom:0;
}

.skill-row h3 {
  font-size:9pt;
  font-weight:700;
  line-height:1.2;
}

.skills > .skill-row h3 {
  color:var(--accent);
}

.education h3 {
  font-size:var(--job-title-size);
  font-weight:700;
  line-height:1.2;
}

.skill-row p,.education p {
  color:var(--body);
  font-size:8pt;
  line-height:1.43;
}

.skill-row p {
  position:relative;
  top:-1px;
}

.resume-footer {
  position:absolute;
  right:var(--page-inset);
  bottom:.5in;
  left:var(--page-inset);
  display:flex;
  justify-content:space-between;
  gap:16px;
  padding-top:8px;
  border-top:var(--hairline);
  color:var(--muted);
  font-size:6.5pt;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
}

.resume-footer a {
  text-decoration:none;
}

@media screen and (min-width:1024px) {
  .resume-page {
    transform:scale(1.05);
    transform-origin:top center;
    margin-bottom:calc(32px + 11in * 0.05);
  }
}

@media screen and (min-width:761px) {

  .experience-continuation {
    padding-bottom:.08in;
  }

  .experience-continuation .job:last-of-type {
    padding-bottom:.3in;
  }
}

@media screen and (max-width:760px) {
  body {
    font-size:13px;
  }

  .resume-nav {
    width:min(100% - 32px,var(--page-width));
  }

  .resume-page {
    width:100%;
    height:auto;
    min-height:0;
    margin:0;
    padding:36px 22px 30px;
    box-shadow:none;
  }

  .resume-header,.job-header,.continuation-header {
    display:block;
  }

  address,.dates {
    margin-top:14px;
    text-align:left;
  }

  .continuation-header span {
    display:block;
    margin-top:10px;
    text-align:left;
  }

  .profile,.experience,.lower-grid,.skills,.education,.open-source,.skill-row {
    display:block;
  }

  h2 {
    margin-bottom:12px;
  }

  .profile {
    padding-top:22px;
  }

  .profile p {
    font-size:13px;
  }

  .job {
    padding:22px 0;
  }

  .job li,.open-source p,.skill-row p,.education p {
    font-size:12px;
  }

  .skill-row + .skill-row {
    margin-top:12px;
  }

  .skills > .skill-row {
    margin-top:0;
    padding:7px 0;
  }

  .skill-row h3 {
    margin-bottom:4px;
  }

  .lower-grid,.open-source {
    padding-top:22px;
  }

  .education {
    margin-top:22px;
    padding-top:22px;
  }

  .resume-footer {
    margin-top:28px;
    position:static;
  }

}

@page {
  size:Letter;
  margin:0;
}

@media print {
  html,body {
    width:var(--page-width);
    background:#fff;
  }

  body {
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }

  .resume-nav {
    display:none;
  }

  .resume-pages {
    width:var(--page-width);
    padding:0;
  }

  .resume-page {
    display:flex;
    flex-direction:column;
    width:var(--page-width);
    min-width:var(--page-width);
    height:var(--page-height);
    min-height:var(--page-height);
    max-height:var(--page-height);
    margin:0;
    padding:var(--page-padding);
    overflow:hidden;
    box-shadow:none;
    break-after:page;
    break-inside:avoid;
    page-break-after:always;
  }

  .resume-page:last-child {
    break-after:auto;
    page-break-after:auto;
  }

  /* Restore the fixed paper layout if a mobile print preview retains screen rules. */
  .resume-header,.job-header,.continuation-header {
    display:flex;
  }

  .profile,.skills,.education,.open-source,.experience,.skill-row {
    display:grid;
  }

  h2 {
    margin-bottom:0;
  }

  address,.dates {
    margin-top:0;
    text-align:right;
  }

  .continuation-header span {
    display:inline;
    margin-top:0;
    text-align:right;
  }

  .profile {
    padding:.22in 0;
  }

  .profile p {
    font-size:9.5pt;
  }

  .job {
    padding:.12in 0;
  }

  .job li {
    font-size:8.4pt;
  }

  .open-source {
    padding:var(--section-space) 0;
  }

  .open-source p {
    font-size:8pt;
  }

  .lower-grid {
    padding-top:var(--section-space);
  }

  .skills > .skill-row,.skill-row + .skill-row {
    margin-top:0;
    padding:0 0 .12in;
  }

  .skill-row h3 {
    margin-bottom:0;
  }

  .skill-row p,.education p {
    font-size:8pt;
  }

  .education {
    margin-top:var(--section-space);
    padding-top:var(--section-space);
  }

  .resume-footer {
    position:absolute;
    margin-top:0;
    right:var(--page-inset);
    bottom:.5in;
    left:var(--page-inset);
  }

  .resume-page:nth-child(2) {
    padding:.38in var(--print-page-inset) .22in;
  }

  .resume-page:nth-child(2) .continuation-header {
    padding-bottom:.14in;
  }

  .resume-page:nth-child(2) .resume-footer {
    right:var(--print-page-inset);
    bottom:.3in;
    left:var(--print-page-inset);
  }

  .resume-page:nth-child(2) .job {
    padding:.1in 0;
  }

  .resume-page:nth-child(2) .open-source,
  .resume-page:nth-child(2) .lower-grid {
    padding-top:var(--print-section-space);
  }

  .resume-page:nth-child(2) .education {
    margin-top:var(--print-section-space);
    padding-top:var(--print-section-space);
  }

  a {
    text-decoration:none;
  }
}
