@import "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible+Mono:wght@200..800&family=Atkinson+Hyperlegible+Next:ital,wght@0,200..800;1,200..800&display=swap";:root{--font-sans:"Atkinson Hyperlegible Next", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"Atkinson Hyperlegible Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--colour-bg:#161512;--colour-bg-card:#22201c;--colour-text:#e3e2dd;--colour-text-muted:#a3a199;--colour-accent:#cbac4d;--colour-accent-hover:#ecd693;--border-color:#323029;--badge-bg:#323029;--badge-text:#dddbd5;--panel-bg:#141412d9;--shadow:0 10px 30px #0006;--container-max-width:810px;--border-radius:12px;--transition-speed:.25s}body.light-mode{--colour-bg:#f3f1ed;--colour-bg-card:#fbfaf9;--colour-text:#252218;--colour-text-muted:#767060;--colour-accent:#a88724;--colour-accent-hover:#73590d;--border-color:#e1ded6;--badge-bg:#e9e7e2;--badge-text:#4d4633;--panel-bg:#fffffdd9;--shadow:0 8px 24px #2d2d2d14}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{background-color:var(--colour-bg);color:var(--colour-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color var(--transition-speed), color var(--transition-speed);min-height:100vh;padding:0;line-height:1.6}@page{size:A4;margin:1cm}@media print{:root{--colour-bg:#fff;--colour-bg-card:#fff;--colour-text:#000;--colour-text-muted:#333;--colour-accent:#000;--border-color:#ccc;--badge-bg:transparent;--badge-text:#000;--shadow:none}body{color:#000;background-color:#fff;font-size:11pt;line-height:1.4}.no-print{display:none!important}}body:is(.light-mode,.print-preview){color:#000;--colour-bg:#d9d9d9;--colour-bg-card:#fff;--colour-text:#000;--colour-text-muted:#333;--colour-accent:#000;--border-color:#ccc;--badge-bg:transparent;--badge-text:#000;--shadow:none;background-color:#d9d9d9;padding-top:80px}.cv-spacer{margin:0 18px}.cv-container{max-width:var(--container-max-width);background-color:var(--colour-bg-card);border-radius:var(--border-radius);border:1px solid var(--border-color);box-shadow:var(--shadow);transition:background-color var(--transition-speed), border-color var(--transition-speed), box-shadow var(--transition-speed);margin:100px auto 40px;padding:3rem}@media print{.cv-container{max-width:100%;box-shadow:none;border:none;margin:0;padding:0}}body:is(.light-mode,.print-preview) .cv-container{background-color:#fff;border:1px solid #777;border-radius:0;width:21cm;min-height:29.7cm;margin:20px auto;padding:1.5cm;box-shadow:0 4px 16px #0000004d}.control-panel{z-index:300;background-color:var(--panel-bg);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-color);width:100%;transition:background-color var(--transition-speed), border-color var(--transition-speed);padding:12px 24px;position:fixed;top:0;left:0;box-shadow:0 4px 20px #00000026}.panel-inner{max-width:var(--container-max-width);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;display:flex}.panel-title{font-family:var(--font-mono);color:var(--colour-accent);font-size:.95rem;font-weight:700}.panel-actions{gap:12px;display:flex}.viewport-debug-widget{z-index:200;border:1px solid var(--border-color);background-color:var(--panel-bg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);font-family:var(--font-mono);color:var(--colour-text);pointer-events:none;opacity:.95;border-radius:10px;padding:10px 12px;font-size:.76rem;line-height:1.35;position:fixed;bottom:12px;right:12px}.viewport-debug-widget p{margin:0}.viewport-debug-widget .debug-title{letter-spacing:.02em;color:var(--colour-accent);margin-bottom:4px;font-weight:700}.btn{font-family:var(--font-sans);cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:6px;padding:8px 16px;font-size:.85rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background-color:var(--colour-accent);color:var(--colour-bg)}.btn-primary:hover{background-color:var(--colour-accent-hover)}.btn-secondary{border-color:var(--border-color);color:var(--colour-text);background-color:#0000}.btn-secondary:hover{background-color:var(--badge-bg)}.btn-secondary.active{background-color:var(--colour-accent);color:var(--colour-bg);border-color:var(--colour-accent)}h1,h2,h3,h4{font-family:var(--font-sans);color:var(--colour-text);font-weight:700;line-height:1.2}@media print{h1,h2,h3,h4{color:#000!important}}a{color:var(--colour-accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;transition:color .2s}a:hover{color:var(--colour-accent-hover)}@media print{a{color:#000;text-decoration:none}a:not([href^=mailto\:]):not([href^=tel\:]):after{content:" (" attr(href) ")";font-size:.9em;font-family:var(--font-mono);color:var(--colour-text-muted)}}body:is(.light-mode,.print-preview) a{color:#000;text-decoration:none}body:is(.light-mode,.print-preview) a:not([href^=mailto\:]):not([href^=tel\:]):after{content:" (" attr(href) ")";font-size:.9em;font-family:var(--font-mono);color:var(--colour-text-muted)}.section-divider{background-color:var(--border-color);border:0;height:1px;margin:2rem 0}@media print{.section-divider{background-color:#ccc;margin:1.2rem 0}}body:is(.light-mode,.print-preview) .section-divider{background-color:#ccc;margin:1.2rem 0}.cv-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:2rem;display:flex}.name{letter-spacing:-1px;margin-bottom:.25rem;font-size:2.8rem}.title-tag{color:var(--colour-accent);font-size:1.15rem;font-weight:600;font-family:var(--font-mono)}.header-contact{flex-direction:column;align-items:flex-end;gap:.35rem;display:flex}.contact-item{align-items:center;gap:8px;font-size:.9rem;display:flex}.contact-item .icon{opacity:.8}.social-links{gap:12px;margin-top:6px;display:flex}.social-link{font-size:.85rem;font-family:var(--font-mono);border:1px solid var(--border-color);background-color:var(--badge-bg);border-radius:4px;padding:4px 8px;text-decoration:none;color:var(--colour-text)!important}.social-link:hover{border-color:var(--colour-accent)}@media print{.cv-header{flex-direction:column;align-items:flex-start;gap:.5rem}.name{font-size:20pt}.title-tag{font-size:12pt;color:#000!important}.header-contact{align-items:flex-start;gap:.15rem;margin-top:.25rem}.contact-item{font-size:10pt}.contact-item .icon,.social-links{display:none}}body:is(.light-mode,.print-preview) .cv-header{flex-direction:column;align-items:flex-start;gap:.5rem}body:is(.light-mode,.print-preview) .name{font-size:20pt}body:is(.light-mode,.print-preview) .title-tag{font-size:12pt}body:is(.light-mode,.print-preview) .header-contact{align-items:flex-start;gap:.15rem;margin-top:.25rem}body:is(.light-mode,.print-preview) .contact-item{font-size:10pt}body:is(.light-mode,.print-preview) .contact-item .icon,body:is(.light-mode,.print-preview) .social-links{display:none}.cv-section{flex-direction:column;gap:1rem;display:flex}.section-title{letter-spacing:-.5px;color:var(--colour-text);border-bottom:2px solid var(--colour-accent);width:max-content;padding-bottom:.25rem;font-size:1.4rem}@media print{.section-title{text-transform:uppercase;letter-spacing:.5px;border-bottom:1.5pt solid #000;margin-bottom:.4rem;font-size:12pt}}body:is(.light-mode,.print-preview) .section-title{text-transform:uppercase;letter-spacing:.5px;border-bottom:1.5pt solid #000;margin-bottom:.4rem;font-size:12pt}.summary-text{color:var(--colour-text);font-size:1.05rem;line-height:1.7}@media print{.summary-text{font-size:10.5pt;line-height:1.4}}body:is(.light-mode,.print-preview) .summary-text{font-size:10.5pt;line-height:1.4}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;display:grid}.skill-category-card{background-color:var(--colour-bg-card);border:1px solid var(--border-color);border-radius:8px;padding:1.25rem}.skill-category-card h3{color:var(--colour-accent);font-size:1.05rem;font-family:var(--font-mono);margin-bottom:.75rem}.skill-category-card ul{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.skill-category-card li{font-size:.85rem}.skill-pill-container{display:inline-block;position:relative}.skill-pill-btn{font-family:var(--font-sans);background-color:var(--badge-bg);color:var(--badge-text);border:1px solid var(--border-color);cursor:default;text-align:start;border-radius:6px;padding:4px 10px;font-size:.85rem;transition:all .2s}.skill-pill-btn.clickable{cursor:pointer}.skill-pill-btn.clickable:hover{border-color:var(--colour-accent);background-color:var(--colour-accent);color:var(--colour-bg)}.skill-pill-btn.faded{opacity:.35;cursor:not-allowed}.skill-nav-popup{background-color:var(--colour-bg-card);border:1px solid var(--colour-accent);z-index:100;white-space:nowrap;border-radius:8px;flex-direction:column;gap:6px;min-width:220px;padding:10px;display:flex;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 8px 24px #00000080}.skill-nav-popup:after{content:"";border-style:solid;border-width:6px;border-color:var(--colour-accent) transparent transparent transparent;position:absolute;top:100%;left:50%;transform:translate(-50%)}.popup-title{font-family:var(--font-mono);color:var(--colour-text-muted);text-align:center;margin-bottom:2px;font-size:.72rem}.popup-nav-btn{font-family:var(--font-sans);background-color:var(--badge-bg);color:var(--colour-text);border:1px solid var(--border-color);cursor:pointer;text-align:left;border-radius:4px;width:100%;padding:6px 10px;font-size:.8rem;transition:all .15s}.popup-nav-btn:hover{background-color:var(--colour-accent);color:var(--colour-bg);border-color:var(--colour-accent)}@media print{.skills-grid{flex-direction:column;gap:.5rem;display:flex}.skill-category-card{background:0 0;border:none;padding:0}.skill-category-card h3{font-size:10.5pt;font-family:var(--font-sans);margin-bottom:.15rem;font-weight:700}.skill-category-card ul{margin-left:0;display:block}.skill-category-card li{color:#000;background:0 0;border:none;padding:0;font-size:10pt;display:inline}.skill-category-card li:not(:last-child):after{content:", "}.skill-pill-btn{color:#000;cursor:default;background:0 0;border:none;padding:0;font-size:10pt;display:inline}.skill-pill-btn.faded{opacity:.35}}body:is(.light-mode,.print-preview) .skills-grid{flex-direction:column;gap:.5rem;display:flex}body:is(.light-mode,.print-preview) .skill-category-card{background:0 0;border:none;padding:0}body:is(.light-mode,.print-preview) .skill-category-card h3{font-size:10.5pt;font-family:var(--font-sans);margin-bottom:.15rem;font-weight:700}body:is(.light-mode,.print-preview) .skill-category-card ul{display:block}body:is(.light-mode,.print-preview) .skill-category-card li{background:0 0;border:none;padding:0;font-size:10pt;display:inline}body:is(.light-mode,.print-preview) .skill-category-card li:not(:last-child):after{content:", "}body:is(.light-mode,.print-preview) .skill-pill-btn{cursor:default;background:0 0;border:none;padding:0;font-size:10pt;display:inline}body:is(.light-mode,.print-preview) .skill-pill-btn.faded{opacity:.35}.experience-list{flex-direction:column;gap:2rem;display:flex}.experience-item{border-radius:var(--border-radius);border:1px solid #0000;flex-direction:column;gap:.75rem;margin:-1.25rem;padding:1.25rem;transition:background-color 1s,border-color 1s,box-shadow 1s,padding 1s;display:flex}.experience-skills{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.skill-pill-mini{font-family:var(--font-mono);background-color:var(--badge-bg);color:var(--colour-text-muted);border:1px solid var(--border-color);border-radius:4px;padding:2px 8px;font-size:.72rem}.experience-item.highlight-flash{border-color:var(--colour-accent)!important;background-color:#2a2822!important;box-shadow:0 0 15px #d4af3759!important}body:is(.light-mode,.print-preview) .experience-item.highlight-flash{box-shadow:none!important;background-color:#ffd!important;border-color:#000!important}@media print{.experience-list{gap:1rem}.experience-item{break-inside:avoid;border:none;gap:.25rem;margin:0;padding:0}}body:is(.light-mode,.print-preview) .experience-list{gap:1rem}body:is(.light-mode,.print-preview) .experience-item{break-inside:avoid;gap:.25rem}.item-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;display:flex}.role-company{flex-direction:column;display:flex}.role{font-size:1.2rem}.company{color:var(--colour-accent);font-size:1rem;font-weight:600}.dates-location{color:var(--colour-text-muted);flex-direction:column;align-items:flex-end;font-size:.9rem;display:flex}.dates{font-family:var(--font-mono);font-weight:600}@media print{.role{font-size:11pt;font-weight:700}.company{font-size:10.5pt;color:#000!important}.dates-location{color:#333;align-items:flex-end;font-size:10pt}.dates{font-family:var(--font-sans);font-weight:700}}body:is(.light-mode,.print-preview) .role{font-size:11pt;font-weight:700}body:is(.light-mode,.print-preview) .company{font-size:10.5pt}body:is(.light-mode,.print-preview) .dates-location{align-items:flex-end;font-size:10pt}body:is(.light-mode,.print-preview) .dates{font-family:var(--font-sans);font-weight:700}.highlights{flex-direction:column;gap:.4rem;margin-left:1.5rem;list-style:square;display:flex}.highlights li{color:var(--colour-text);font-size:.95rem}@media print{.highlights{gap:.2rem;margin-left:1.2rem}.highlights li{font-size:10pt;color:#000!important}}body:is(.light-mode,.print-preview) .highlights{gap:.2rem;margin-left:1.2rem}body:is(.light-mode,.print-preview) .highlights li{font-size:10pt}.projects-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;display:grid}.project-card{background-color:var(--colour-bg-card);border:1px solid var(--border-color);border-radius:var(--border-radius);flex-direction:column;gap:.75rem;padding:1.5rem;transition:background-color 1s,border-color 1s,box-shadow 1s;display:flex}.project-card.highlight-flash{border-color:var(--colour-accent)!important;background-color:#2a2822!important;box-shadow:0 0 15px #d4af3759!important}.project-card:hover{border-color:var(--colour-accent)}.project-header{justify-content:space-between;align-items:center;display:flex}.project-header h3{font-size:1.15rem}.project-link{font-family:var(--font-mono);font-size:.85rem;text-decoration:none}.project-card p{color:var(--colour-text-muted);font-size:.9rem}.project-tech{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.tech-badge{background-color:var(--badge-bg);color:var(--badge-text);border:1px solid var(--border-color);font-size:.75rem;font-family:var(--font-mono);border-radius:4px;padding:2px 8px}@media print{.projects-grid{flex-direction:column;gap:.8rem;display:flex}.project-card{break-inside:avoid;background:0 0;border:none;gap:.15rem;padding:0}.project-header h3{font-size:11pt;font-weight:700}.project-link{display:none}.project-card p{color:#000;font-size:10pt}.project-tech{margin-top:.15rem;display:block}.tech-badge{color:#333;font-size:9.5pt;font-family:var(--font-sans);background:0 0;border:none;padding:0;display:inline}.tech-badge:not(:last-child):after{content:", "}}body:is(.light-mode,.print-preview) .projects-grid{flex-direction:column;gap:.8rem;display:flex}body:is(.light-mode,.print-preview) .project-card{break-inside:avoid;background:0 0;border:none;gap:.15rem;padding:0}body:is(.light-mode,.print-preview) .project-card.highlight-flash{outline:1px solid #000;animation:none;background-color:#ffd!important}body:is(.light-mode,.print-preview) .project-header h3{font-size:11pt;font-weight:700}body:is(.light-mode,.print-preview) .project-link{display:none}body:is(.light-mode,.print-preview) .project-card p{font-size:10pt}body:is(.light-mode,.print-preview) .project-tech{margin-top:.15rem;display:block}body:is(.light-mode,.print-preview) .tech-badge{font-size:9.5pt;font-family:var(--font-sans);background:0 0;border:none;padding:0;display:inline}body:is(.light-mode,.print-preview) .tech-badge:not(:last-child):after{content:", "}.dual-column-section{grid-template-columns:1fr 1fr;gap:2.5rem;display:grid}.half-width{width:100%}.education-list{flex-direction:column;gap:1.25rem;display:flex}.education-item{flex-direction:column;gap:.25rem;display:flex}.degree{font-size:1.05rem;font-weight:700}.institution{color:var(--colour-accent);font-weight:600}.edu-details{color:var(--colour-text-muted);font-size:.85rem}.certifications-list{flex-direction:column;gap:.5rem;margin-left:1.25rem;list-style:square;display:flex}.certifications-list li{font-size:.95rem;transition:background-color 1s}.certifications-list li.highlight-flash{background-color:#d4af3733;border-radius:4px}@media print{.dual-column-section{flex-direction:column;gap:1rem;display:flex}.education-list{gap:.5rem}.education-item{break-inside:avoid}.degree{font-size:11pt}.institution{font-size:10.5pt;color:#000!important}.edu-details{color:#333;font-size:10pt}.certifications-list{gap:.2rem;margin-left:1.2rem}.certifications-list li{font-size:10pt}}body:is(.light-mode,.print-preview) .dual-column-section{flex-direction:column;gap:1rem;display:flex}body:is(.light-mode,.print-preview) .education-list{gap:.5rem}body:is(.light-mode,.print-preview) .education-item{break-inside:avoid}body:is(.light-mode,.print-preview) .degree{font-size:11pt}body:is(.light-mode,.print-preview) .institution{font-size:10.5pt}body:is(.light-mode,.print-preview) .edu-details{font-size:10pt}body:is(.light-mode,.print-preview) .certifications-list{gap:.2rem;margin-left:1.2rem}body:is(.light-mode,.print-preview) .certifications-list li{font-size:10pt}body:is(.light-mode,.print-preview) .certifications-list li.highlight-flash{background-color:#ffd;animation:none}.cv-footer{max-width:var(--container-max-width);text-align:center;border-top:1px solid var(--border-color);color:var(--colour-text-muted);margin:0 auto 60px;padding:2rem 0;font-size:.85rem}@media screen and (width<=360px){body.dark-mode{--panel-bg:#141412f0;--border-color:#3e3b32}body.light-mode{--panel-bg:#fffffdf0;--shadow:0 6px 18px #2d2d2d14}html{font-size:15px}.cv-spacer{margin:0 10px}.control-panel{padding:10px 12px}.panel-inner{align-items:stretch;gap:10px}.panel-title{font-size:.82rem}.panel-actions{grid-template-columns:1fr;gap:8px;width:100%;display:grid}.viewport-debug-widget{min-width:180px;padding:8px 10px;font-size:.68rem;bottom:8px;right:8px}.btn{justify-content:center;width:100%}.cv-container{border-radius:10px;margin-top:128px;margin-bottom:24px;padding:1rem}.cv-header{flex-direction:column;gap:1rem}.name{letter-spacing:-.5px;font-size:1.85rem}.title-tag{font-size:.98rem}.header-contact{align-items:flex-start;width:100%}.social-links{flex-wrap:wrap;gap:8px}.section-title{width:100%;font-size:1.15rem}.summary-text{font-size:.98rem;line-height:1.6}.skills-grid,.projects-grid,.dual-column-section{grid-template-columns:1fr;gap:1rem;display:grid}.skill-category-card,.project-card,.experience-item{margin:0;padding:.95rem}.skill-nav-popup{white-space:normal;min-width:min(270px,100vw - 36px);left:0;transform:translate(0)}.skill-nav-popup:after{left:24px;transform:none}.item-header{flex-direction:column;gap:.45rem}.dates-location{align-items:flex-start;font-size:.84rem}.highlights,.certifications-list{margin-left:1rem}.cv-footer{margin-bottom:30px;padding:1.2rem 0;font-size:.78rem}}@media print{body:is(.light-mode,.dark-mode,.print-preview){color:#000!important;background:#fff!important;padding-top:0!important}body:is(.light-mode,.dark-mode,.print-preview) .cv-container{width:auto!important;max-width:100%!important;min-height:0!important;box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important;margin:0!important;padding:0!important}body:is(.light-mode,.dark-mode,.print-preview) .experience-item,body:is(.light-mode,.dark-mode,.print-preview) .project-card,body:is(.light-mode,.dark-mode,.print-preview) .skill-category-card{box-shadow:none!important;background:0 0!important;border:none!important}body:is(.light-mode,.dark-mode,.print-preview) .highlight-flash,body:is(.light-mode,.dark-mode,.print-preview) .project-card.highlight-flash,body:is(.light-mode,.dark-mode,.print-preview) .certifications-list li.highlight-flash{box-shadow:none!important;background:0 0!important;border-color:#0000!important;outline:none!important}}
