*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --teal:#2a9d8f;
  --teal-dark:#0a3630;
  --teal-mid:#1a6b5e;
  --teal-light:#d4ede9;
  --teal-pale:#eaf3f0;
  --gold:#c9a84c;
  --bg:#ece4d6;
  --paper:#f5efe2;
  --text:#062320;
  --text-muted:#0f4a42;
  --text-dim:#2a6b5e;
  --border:rgba(10,54,48,0.22);
  --serif:'Fraunces',Georgia,serif;
  --sans:'DM Sans',system-ui,sans-serif;
}
[data-theme="dark"]{
  --teal:#3eb8a8;
  --teal-dark:#7cf6c2;
  --teal-mid:#2a9d8f;
  --teal-light:#3a6e64;
  --teal-pale:#1a2e2a;
  --gold:#e2c87c;
  --bg:#0a1814;
  --paper:#13241f;
  --text:#f0faf6;
  --text-muted:#a8d0c8;
  --text-dim:#7aa49c;
  --border:rgba(124,246,194,0.22);
}
html,body{
  background:var(--bg);color:var(--text);
  font-family:var(--sans);font-size:16px;line-height:1.6;
  transition:background 0.35s,color 0.35s;
}

.cv-back{
  position:sticky;top:0;z-index:10;
  background:var(--bg);border-bottom:1px solid var(--border);
  padding:12px 24px;display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.cv-back a{
  font-size:14px;color:var(--teal-dark);text-decoration:none;font-weight:500;
  display:inline-flex;align-items:center;gap:6px;
}
.cv-back a:hover,.cv-back a:focus-visible{color:var(--teal);outline:none}
.cv-back-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.cv-theme-btn{
  font-size:13px;color:var(--text-muted);background:transparent;
  border:1px solid var(--border);
  padding:6px 12px;border-radius:20px;cursor:pointer;font-family:inherit;
  display:inline-flex;align-items:center;gap:6px;
  transition:all 0.25s;
}
.cv-theme-btn:hover,.cv-theme-btn:focus-visible{
  border-color:var(--teal);color:var(--teal);outline:none;
}
.cv-print{
  font-size:14px;color:var(--teal);background:transparent;border:1px solid var(--teal);
  padding:6px 14px;border-radius:20px;cursor:pointer;font-family:inherit;
}
.cv-print:hover,.cv-print:focus-visible{background:var(--teal);color:#fff;outline:none}

.cv-page{
  max-width:1080px;margin:24px auto;padding:0;
  background:var(--paper);
  box-shadow:0 8px 32px rgba(10,54,48,0.12);
  border-radius:8px;overflow:hidden;
  display:grid;grid-template-columns:35% 65%;
  min-height:calc(100vh - 120px);
}

.cv-side{
  background:var(--teal-pale);padding:36px 28px;
  border-right:1px solid var(--border);
  display:flex;flex-direction:column;gap:24px;
}
.cv-name{
  font-family:var(--serif);font-size:30px;line-height:1.1;
  color:var(--teal-dark);font-weight:500;
}
.cv-role{
  font-size:14px;color:var(--teal);font-weight:500;
  text-transform:uppercase;letter-spacing:0.08em;margin-top:6px;
}
.cv-contact{display:flex;flex-direction:column;gap:8px;font-size:14px}
.cv-contact a{
  color:var(--teal-dark);text-decoration:none;
  display:inline-flex;align-items:center;gap:8px;
  word-break:break-word;
}
.cv-contact a:hover{color:var(--teal);text-decoration:underline}
.cv-side-h{
  font-family:var(--serif);font-size:16px;color:var(--teal-dark);
  font-weight:500;margin-bottom:8px;
  border-bottom:1px solid var(--border);padding-bottom:6px;
}
.cv-badges{display:flex;flex-direction:column;gap:6px}
.cv-badge{
  background:var(--paper);border:1px solid var(--border);
  padding:8px 12px;border-radius:6px;font-size:13px;
  display:flex;flex-direction:column;gap:2px;
}
.cv-badge-name{color:var(--teal-dark);font-weight:500}
.cv-badge-meta{color:var(--text-muted);font-size:12px}
.cv-tags{display:flex;flex-wrap:wrap;gap:5px}
.cv-tag{
  font-size:12px;color:var(--teal-dark);background:var(--paper);
  border:1px solid var(--border);
  padding:3px 9px;border-radius:12px;
  transition:all 0.2s;
}
.cv-skill-block{margin-bottom:14px}
.cv-skill-block:last-child{margin-bottom:0}
.cv-skill-label{
  font-size:11px;color:var(--teal);text-transform:uppercase;
  letter-spacing:0.08em;font-weight:500;margin-bottom:5px;
}

.cv-main{padding:36px 36px 40px;display:flex;flex-direction:column;gap:26px}
.cv-section-h{
  font-family:var(--serif);font-size:20px;color:var(--teal-dark);font-weight:500;
  border-bottom:2px solid var(--teal);padding-bottom:6px;margin-bottom:12px;
}
.cv-summary{font-size:15px;color:var(--text-muted);line-height:1.7;font-weight:300}
.cv-job{margin-bottom:18px}
.cv-job:last-child{margin-bottom:0}
.cv-job-title{
  font-family:var(--serif);font-size:16px;color:var(--teal-dark);font-weight:500;
}
.cv-job-meta{
  font-size:13px;color:var(--text-dim);margin-top:2px;margin-bottom:8px;
  display:flex;flex-wrap:wrap;gap:10px;
}
.cv-job-meta span:not(:first-child)::before{content:"·";margin-right:10px;color:var(--text-dim)}
.cv-job-intro{font-size:14px;color:var(--text-muted);line-height:1.65;margin-bottom:8px;font-weight:300}
.cv-job ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:5px}
.cv-job li{
  font-size:14px;color:var(--text);line-height:1.55;font-weight:300;
  padding-left:16px;position:relative;
}
.cv-job li::before{
  content:"";position:absolute;left:0;top:9px;
  width:6px;height:6px;border-radius:50%;background:var(--teal);
}

.cv-edu .cv-job-title{font-size:15px}
.cv-edu .cv-job-intro{font-size:13px;line-height:1.6}

@media(max-width:760px){
  .cv-page{grid-template-columns:1fr}
  .cv-side{border-right:none;border-bottom:1px solid var(--border)}
  .cv-main{padding:28px 22px}
}

/* ── ENTRANCE ANIMATIONS ── */
@keyframes cvFadeUp{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes cvFadeIn{from{opacity:0}to{opacity:1}}
.cv-page{
  opacity:0;animation:cvFadeUp 0.7s cubic-bezier(0.4,0,0.2,1) 0.1s forwards;
}
.cv-side > *{opacity:0;animation:cvFadeUp 0.6s cubic-bezier(0.4,0,0.2,1) forwards}
.cv-side > *:nth-child(1){animation-delay:0.25s}
.cv-side > *:nth-child(2){animation-delay:0.35s}
.cv-side > *:nth-child(3){animation-delay:0.45s}
.cv-side > *:nth-child(4){animation-delay:0.55s}
.cv-main > *{opacity:0;animation:cvFadeUp 0.6s cubic-bezier(0.4,0,0.2,1) forwards}
.cv-main > *:nth-child(1){animation-delay:0.35s}
.cv-main > *:nth-child(2){animation-delay:0.50s}
.cv-main > *:nth-child(3){animation-delay:0.65s}
.cv-section-h{position:relative;overflow:hidden}
.cv-section-h::after{
  content:"";position:absolute;left:0;bottom:-2px;height:2px;width:100%;
  background:var(--teal);transform:scaleX(0);transform-origin:left;
  animation:cvHeadingLine 0.8s cubic-bezier(0.4,0,0.2,1) 0.7s forwards;
}
@keyframes cvHeadingLine{to{transform:scaleX(1)}}
.cv-job{transition:transform 0.3s cubic-bezier(0.4,0,0.2,1)}
.cv-job:hover{transform:translateX(3px)}
.cv-badge{transition:transform 0.3s cubic-bezier(0.4,0,0.2,1),border-color 0.3s,box-shadow 0.3s}
.cv-badge:hover{transform:translateY(-2px);border-color:var(--teal);box-shadow:0 6px 18px rgba(10,54,48,0.10)}
.cv-tag{transition:background 0.2s,color 0.2s,border-color 0.2s}
.cv-tag:hover{background:var(--teal);color:#fff;border-color:var(--teal)}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .cv-page,.cv-side > *,.cv-main > *{opacity:1}
  .cv-section-h::after{transform:scaleX(1)}
}
@media print{
  .cv-page,.cv-side > *,.cv-main > *{opacity:1!important;animation:none!important;transform:none!important}
  .cv-section-h::after{transform:scaleX(1)!important;animation:none!important}
}

/* ── PRINT (A4) ── */
@media print{
  @page{size:A4;margin:12mm}
  /* Force light palette for print regardless of viewing theme */
  :root,[data-theme="dark"]{
    --bg:#fff;--paper:#fff;--text:#062320;--text-muted:#0f4a42;--text-dim:#2a6b5e;
    --teal:#2a9d8f;--teal-dark:#0a3630;--teal-mid:#1a6b5e;--teal-light:#d4ede9;--teal-pale:#eaf3f0;
    --border:rgba(10,54,48,0.22);
  }
  html,body{background:#fff;font-size:11pt;line-height:1.4}
  .cv-back{display:none}
  .cv-page{
    margin:0;box-shadow:none;border-radius:0;max-width:none;
    grid-template-columns:32% 68%;min-height:auto;
  }
  .cv-side{background:#f5fbfa;padding:18px 16px;gap:14px}
  .cv-main{padding:18px 20px;gap:14px}
  .cv-name{font-size:22pt}
  .cv-role{font-size:10pt}
  .cv-section-h{font-size:13pt;margin-bottom:6px}
  .cv-side-h{font-size:11pt}
  .cv-summary{font-size:10pt}
  .cv-job-title{font-size:11pt}
  .cv-job-meta,.cv-job-intro,.cv-job li,.cv-contact{font-size:9.5pt}
  .cv-tag,.cv-badge-meta{font-size:8.5pt}
  .cv-badge-name{font-size:9.5pt}
  .cv-job{break-inside:avoid;margin-bottom:10px}
  a{color:var(--teal-dark);text-decoration:none}
}
