@font-face{font-family:"Source Serif";src:url("assets/source-serif-4.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
:root{color-scheme:light;--rail:185px;--paper:#f8f7f2;--ink:#242c29;--muted:#52605a;--accent:#235c49;--accent-surface:#e6eee7;--rule:#cbd0c7;--display:"Source Serif",Georgia,serif;--body:Arial,Helvetica,sans-serif;--small:.875rem}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scrollbar-color:var(--muted) var(--paper)}
body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.65 var(--body);-webkit-print-color-adjust:exact;print-color-adjust:exact}
::selection{background:var(--accent);color:var(--paper)}
main{max-width:1120px;padding:80px 64px 32px;margin:auto}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.22em}
a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
p{margin:0 0 .75rem}
h1,h2,h3{margin:0;font-weight:400;text-wrap:balance}
h1{font:400 clamp(3rem,6.5vw,5.5rem)/.99 var(--display);letter-spacing:-.035em}
h2{font:400 2rem/1.2 var(--display);margin-bottom:1.75rem}
h3{font-size:1.125rem;font-weight:600;line-height:1.35}
.intro{display:grid;grid-template-columns:1fr auto;column-gap:3rem}
.profession{font-size:1.25rem;margin:1.25rem 0 0;color:var(--accent)}
.contact{align-self:end;font-size:var(--small);display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}
.contact p{margin:0;color:var(--muted)}
.profiles{display:flex;gap:1rem}
.download{display:flex;flex-direction:column;gap:0;margin-top:1.25rem;background:var(--accent);color:var(--paper);padding:.7rem 1.2rem;text-decoration:none;min-width:188px}
.download span{font-size:.75rem;color:var(--paper)}
.summary{grid-column:1/-1;font-size:1.25rem;line-height:1.6;max-width:70ch;margin:2.5rem 0 1.5rem}
nav{grid-column:1/-1;display:flex;gap:1.5rem;font-size:var(--small);padding-bottom:2rem}
section{border-top:1px solid var(--rule);padding-top:2rem;margin-top:2rem;scroll-margin-top:2rem}
section:target h2{color:var(--accent)}
.entry{display:grid;grid-template-columns:var(--rail) 1fr;gap:2rem;margin-bottom:2rem;break-inside:avoid}
.entry-meta{font-size:var(--small);color:var(--muted);font-variant-numeric:tabular-nums;padding-top:.1rem}
.entry-meta p{margin-bottom:.15rem}
.kicker{font-size:.6875rem;letter-spacing:.09em;text-transform:uppercase}
.entry-meta p+.kicker{margin-top:.4rem}
.entry-body{max-width:72ch;min-width:0}
.role{color:var(--accent);margin:.2rem 0 .75rem}
ul{padding-left:1.1rem;margin:.75rem 0}
li{padding-left:.2rem;margin-bottom:.4rem}
li::marker{color:var(--muted)}
.technology{font-size:var(--small);color:var(--muted);margin-top:1rem}
.diagram{margin:1.25rem 0 0;max-width:min(600px,100%);container-type:inline-size}
/* The 600-unit SVG can shrink to 90% (540px) without changing layouts at
   the page-column breakpoint. Text steps remain the no-container-query fallback. */
.diagram-wide{display:none}
.diagram-steps{list-style:decimal;padding:0 0 0 1.5rem;margin:0}
.diagram-steps li{padding:0 0 1.5rem .5rem;margin:0}
.diagram-steps li::marker{color:var(--accent);font-weight:600}
.diagram-steps li:last-child{padding-bottom:0}
.diagram-steps span{display:block}
.diagram-steps span,.diagram-failure{font-size:var(--small);color:var(--muted)}
.diagram-failure{margin:.5rem 0 0}
@container (width >= 540px){
 .diagram-wide{display:block}
 .diagram-steps{display:none}
}
.diagram svg{display:block;width:100%;height:auto}
.dg-box{fill:none;stroke:var(--rule);stroke-width:1}
.dg-label{fill:var(--ink);font:600 14px var(--body);text-anchor:middle}
.dg-sub{fill:var(--muted);font:400 12px var(--body);text-anchor:middle}
.dg-note{text-anchor:start}
.dg-line{stroke:var(--muted);stroke-width:1}
.dg-head{fill:var(--muted)}
figcaption{color:var(--muted);font-size:var(--small);margin-top:.6rem;max-width:72ch}
.section-intro{color:var(--muted);margin-top:-.75rem;margin-bottom:2rem}
.project h3{margin-bottom:.5rem}
.project-link{font-size:var(--small)}
.skills{margin:0 0 2rem}
.skills>div{display:grid;grid-template-columns:var(--rail) 1fr;gap:2rem;margin:1rem 0}
dt{font-size:var(--small);font-weight:600}
dd{margin:0;max-width:72ch}
.education .entry{margin-bottom:1.25rem}
.education h3{font-size:1rem}
.references-list{display:grid;grid-template-columns:1fr 1fr;gap:2rem}
.references-list .role,.reference-note{font-size:var(--small)}
.reference-note{color:var(--muted);margin:.5rem 0 0}
footer{border-top:1px solid var(--rule);margin-top:3rem;padding:2rem 0 0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.4rem 1.5rem;font-size:var(--small)}
footer p{grid-column:1/-1;margin:0;max-width:70ch;font-size:1rem}footer span{color:var(--muted)}
.print-url{display:none}
.skip-link{position:absolute;left:1rem;top:0;padding:.5rem 1rem;background:var(--paper);transform:translateY(-120%)}
.skip-link:focus{transform:translateY(0)}
@media screen and (max-width:900px){
 main{padding:40px 24px 24px}.intro{grid-template-columns:minmax(0,1fr);gap:0}.contact{margin-top:1.75rem}.download{margin-top:.75rem}.summary{font-size:1.125rem;margin-top:2rem}nav{gap:1rem;flex-wrap:wrap;padding-bottom:.5rem}
 .entry,.skills>div{grid-template-columns:1fr;gap:.5rem}.references-list{grid-template-columns:1fr;gap:1rem}.entry-meta{display:flex;gap:.35rem 1rem;flex-wrap:wrap;align-items:baseline}.entry-meta p+.kicker{margin-top:0}.entry{margin-bottom:2rem}section{padding-top:1.5rem;margin-top:1.5rem}h2{font-size:1.75rem}footer{grid-template-columns:minmax(0,1fr)}footer span{margin-top:.5rem}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media screen and (max-width:700px){
 main{padding-top:24px}.profession{margin-top:.75rem}
 .contact{flex-direction:row;flex-wrap:wrap;gap:.25rem .75rem;margin-top:1rem;align-items:center}
 .contact>p{flex-basis:100%}
 .profiles{gap:.75rem;flex-wrap:wrap;flex:1 1 auto;min-width:0}.download{min-width:0;max-width:100%;margin:0;padding:.5rem .75rem;flex:0 0 auto}
 .summary{font-size:1rem;margin:1.25rem 0 .75rem}nav{gap:.75rem;padding-bottom:0}
 #experience{margin-top:1rem;padding-top:1.25rem}#experience>h2{margin-bottom:1rem}
}
/* Keep standalone links touch-sized through the tablet layout and on larger touchscreens.
   The two email links are the page's primary action and its smallest targets, so they
   join the set; prose links stay inline-sized and rely on the inline exception. */
@media screen and (max-width:900px),screen and (any-pointer:coarse){
 .profiles a,nav a,.project-link,.contact p a,footer>a{display:inline-flex;align-items:center;min-width:44px;min-height:44px}
}
@media screen{
 .download{position:relative;padding-right:1.75rem}
 .download::after{content:"";position:absolute;top:0;right:0;border-top:.75rem solid var(--paper);border-left:.75rem solid var(--accent-surface);pointer-events:none}
 main{overflow-wrap:anywhere}.intro>div{min-width:0}

 /* Highlight prose links only; navigation keeps its full-size focus outline. */
 .entry-body p a:focus-visible{background-color:var(--accent-surface)}
 footer>a{justify-self:start;max-width:100%}
 section:target{border-top-color:var(--accent)}
 .summary,.entry-body p,.entry-body li,dd,figcaption,footer p{text-wrap:pretty}
 .entry-body .technology{max-width:75ch;text-wrap:balance}
}
@media screen and (min-width:901px){

}
@media screen and (hover:hover){
 a:hover{text-decoration-thickness:2px}.download:hover{background:var(--ink)}
 .entry-body p a:hover{background-color:var(--accent-surface)}
}
.print-link-label{display:none}
@page{size:A4;margin:13mm 15mm}
@media print{
 .screen-link-label{display:none}.print-link-label{display:inline}.entry-body a .print-link-label{white-space:nowrap}
 :root{--rail:27mm;--paper:#fff;--ink:#202621;--muted:#48544c;--rule:#bdc5bf}
 body{font-size:9pt;line-height:1.3}main{max-width:none;margin:0;padding:0}
 .skip-link,nav,.download,.profiles,footer,.diagram,.kicker{display:none}.print-url{display:block;font-size:8pt}
 .intro{display:grid;grid-template-columns:1fr auto;gap:0 12mm}h1{font-size:28pt;line-height:.98}.profession{font-size:12pt;margin-top:4mm}.contact{font-size:8pt;gap:1mm;margin:0;align-self:end}
 .summary{font-size:10.5pt;line-height:1.45;margin:4mm 0 1mm;max-width:none}
 section{padding-top:3mm;margin-top:4mm;scroll-margin:0}h2{font-size:19pt;margin-bottom:3mm}h3{font-size:10pt}
 .entry,.skills>div{display:grid;grid-template-columns:var(--rail) 1fr;gap:5mm}.entry{margin-bottom:1.6mm}.entry-meta{display:block;font-size:8pt;padding-top:0}.kicker{font-size:7pt;letter-spacing:.08em}.entry-meta p+.kicker{margin-top:1.5mm}.entry-body{max-width:none}
 .role{margin:1mm 0 1.5mm}p{margin-bottom:1.7mm}ul{margin:1.6mm 0;padding-left:3mm}li{margin-bottom:.45mm;padding-left:.5mm}
 .technology,.project-link,dt{font-size:8pt}.technology{margin-top:1.6mm}.section-intro{margin:0 0 5mm;font-size:9pt}
 #projects{break-before:page;margin-top:0;padding-top:0;border-top:0}.project{margin-bottom:3mm;grid-template-columns:1fr}.project .entry-meta{display:none}.project h3{margin-bottom:2mm}
 .project .entry-body>p:last-child{margin-bottom:0}
 #projects .section-intro{margin-bottom:3mm}#skills,.education{margin-top:3mm;padding-top:3mm}
 .skills{margin:0}.skills>div{margin:2mm 0}.education .entry{margin-bottom:2mm}.education h3{font-size:9pt}
 a{color:var(--ink);text-decoration:none}.entry-body a{text-decoration:underline}strong{font-weight:700}
 .references{break-inside:avoid;margin-top:3mm;padding-top:3mm}.references h2{font-size:16pt;margin-bottom:3mm}.references-list{grid-template-columns:1fr 1fr;gap:5mm}.references-list .role,.reference-note{font-size:8pt}.reference-note{margin:2mm 0 0}
}

@media (forced-colors:active){
 .download::after{display:none}
 .dg-label,.dg-sub,.dg-head{fill:CanvasText}.dg-box,.dg-line{stroke:CanvasText}
}

/* The Icelandic text alternative avoids squeezing translated SVG labels. */
.diagram-text .diagram-steps{display:block}

/* The complete combined Icelandic draft flows across pages without dropping copy. */
@media print{
 html[lang="is"] #projects{break-before:auto;margin-top:3mm;padding-top:3mm;border-top:1px solid var(--rule)}
 html[lang="is"] .print-url{max-width:90mm}
 html[lang="is"] .project-links{font-size:8pt}

 html[lang="is"] #experience .entry{display:block;break-inside:auto}
 html[lang="is"] #experience .entry-meta{break-after:avoid}
 /* Outside list markers need space within the full-width printable content box. */
 html[lang="is"] #experience ul{padding-inline-start:5mm}
 html[lang="is"] #experience li{break-inside:avoid}
 html[lang="is"] .summary{font-size:9pt;line-height:1.3;margin-top:3mm}
 html[lang="is"] h1{font-size:24pt}

 html[lang="is"] h2{font-size:16pt;margin-bottom:2mm}
 html[lang="is"] section{margin-top:2mm;padding-top:2mm}
 html[lang="is"] .skills>div{margin:1mm 0}
 html[lang="is"] .project{margin-bottom:2mm}
 html[lang="is"] .project h3{margin-bottom:1mm}
 html[lang="is"] .references{margin-top:2mm;padding-top:2mm}
}

/* Keep long proof URLs readable in the recognition entry. */
.recognition-upstream{grid-template-columns:1fr}
.recognition-upstream .entry-meta{display:none}
.project-links a{overflow-wrap:anywhere}
@media print{
 .project-links{font-size:8pt;margin-bottom:0}
 .recognition-upstream p{margin-bottom:1mm}
 .recognition-upstream .project-links{margin-bottom:0}
}
@media print{
 html[lang="is"] #experience ul{margin:1mm 0}
 html[lang="is"] #experience .role{margin:.5mm 0 1mm}
 html[lang="is"] .profession{margin-top:2mm}
}
@media print{
 html[lang="is"] .education .entry{margin-bottom:1mm}
 html[lang="is"] .references h2{margin-bottom:1mm}
}
@page icelandic{size:A4;margin:10mm 15mm}
@media print{html[lang="is"] body{page:icelandic}}
/* Full-width English experience accommodates the aligned factual detail. */
@page english{size:A4;margin:10mm 15mm}
@media print{
 html[lang="en"] body{page:english}
 html[lang="en"] section{margin-top:2mm;padding-top:2mm}
 html[lang="en"] h2{font-size:16pt;margin-bottom:2mm}
 html[lang="en"] #experience .role{margin:.5mm 0 1mm}
 html[lang="en"] #experience ul{margin:1mm 0}
}
@media print{
 html[lang="en"] #experience .entry{display:block;break-inside:auto}
 html[lang="en"] #experience .entry-meta{break-after:avoid}
 html[lang="en"] #experience ul{padding-inline-start:5mm}
 html[lang="en"] #experience li{break-inside:avoid}
}
@media print{
 html[lang="is"] p{margin-bottom:1.2mm}
}
@media print{
 html[lang="is"] body{line-height:1.22}
 html[lang="is"] .summary{line-height:1.22}
}
