*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --nav-h: 3.25rem;
  --max-w: 58rem;
  --r-xs:  0.25rem;
  --r-sm:  0.5rem;
  --r-md:  0.875rem;
  --r-pill:9999px;

  --bg:       #FAFAFA; --surface:  #FFFFFF;
  --ink:      #09090B; --ink2:     #3F3F46; --ink3:     #71717A;
  --border:   #E4E4E7; --muted-bg: #F4F4F5;
  --accent:   #2563EB; --accent-bg:rgba(37,99,235,0.09);

  --dk:       #18181B; --dk-sur:   #1F1F23;
  --dk-pr:    #FAFAFA; --dk-sec:   #A1A1AA; --dk-mut:   #52525B;
  --dk-bor:   #2D2D31; --dk-acc:   #3B82F6; --dk-acc-bg:rgba(59,130,246,0.12);
}

html, body { width:100%; height:100%; overflow:hidden; font-family:'Space Grotesk',sans-serif; font-size:clamp(13px,1.05vw,17px); -webkit-font-smoothing:antialiased; background:var(--dk); }

/* ── Icons ── */
.icon { display:inline-block; width:.95em; height:.95em; background:currentColor; flex-shrink:0; vertical-align:middle; -webkit-mask-size:contain; mask-size:contain; -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat; -webkit-mask-position:center; mask-position:center; }
.i-mail     { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/mail.svg);           mask-image:url(https://unpkg.com/lucide-static@latest/icons/mail.svg); }
.i-phone    { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/phone.svg);          mask-image:url(https://unpkg.com/lucide-static@latest/icons/phone.svg); }
.i-pin      { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/map-pin.svg);        mask-image:url(https://unpkg.com/lucide-static@latest/icons/map-pin.svg); }
.i-globe    { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/globe.svg);          mask-image:url(https://unpkg.com/lucide-static@latest/icons/globe.svg); }
.i-github   { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/github.svg);         mask-image:url(https://unpkg.com/lucide-static@latest/icons/github.svg); }
.i-linkedin { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/linkedin.svg);       mask-image:url(https://unpkg.com/lucide-static@latest/icons/linkedin.svg); }
.i-twitter  { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/twitter.svg);        mask-image:url(https://unpkg.com/lucide-static@latest/icons/twitter.svg); }
.i-scholar  { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/graduation-cap.svg); mask-image:url(https://unpkg.com/lucide-static@latest/icons/graduation-cap.svg); }
.i-orcid    { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/fingerprint.svg);    mask-image:url(https://unpkg.com/lucide-static@latest/icons/fingerprint.svg); }

/* ── Nav ── */
.top-nav { position:fixed; top:0; left:0; right:0; height:var(--nav-h); z-index:200; display:flex; align-items:center; justify-content:space-between; padding:0 2rem; background:rgba(24,24,27,0.9); backdrop-filter:blur(14px) saturate(1.8); -webkit-backdrop-filter:blur(14px) saturate(1.8); border-bottom:1px solid var(--dk-bor); }
.nav-brand { font-family:'Archivo',sans-serif; font-weight:700; font-size:.83rem; letter-spacing:.07em; text-transform:uppercase; color:var(--dk-pr); text-decoration:none; }
.nav-r { display:flex; gap:.2rem; align-items:center; }
.lang-btn { background:transparent; color:var(--dk-mut); border:1px solid transparent; padding:.24rem .75rem; font-size:.7rem; font-family:'Space Grotesk',sans-serif; font-weight:500; cursor:pointer; border-radius:var(--r-pill); transition:color .2s,background .2s; }
.lang-btn:hover { color:var(--dk-sec); }
.lang-btn.on { background:var(--dk-acc); color:#fff; }

/* ── Side nav ── */
.side-nav { position:fixed; right:1.25rem; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; align-items:flex-end; z-index:150; }
.sd-wrap { display:flex; align-items:center; gap:.5rem; padding:.3rem 0; cursor:pointer; }
.sd { width:6px; height:6px; border-radius:50%; flex-shrink:0; background:transparent; transition:all .3s cubic-bezier(.16,1,.3,1); }
.sd-label { font-size:.57rem; letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; opacity:0; transition:opacity .18s; user-select:none; }
.sd-wrap:hover .sd-label { opacity:1; }
.sd-wrap.on .sd-label { opacity:1; font-weight:600; }

.side-nav.on-dark  .sd { border:1.5px solid rgba(255,255,255,.22); }
.side-nav.on-dark  .sd-label { color:var(--dk-sec); }
.side-nav.on-dark  .sd-wrap.on .sd { background:var(--dk-acc); border-color:var(--dk-acc); box-shadow:0 0 0 3px var(--dk-acc-bg); transform:scale(1.4); }
.side-nav.on-dark  .sd-wrap.on .sd-label { color:var(--dk-acc); }
.side-nav.on-light .sd { border:1.5px solid rgba(0,0,0,.2); }
.side-nav.on-light .sd-label { color:var(--ink3); }
.side-nav.on-light .sd-wrap.on .sd { background:var(--accent); border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-bg); transform:scale(1.4); }
.side-nav.on-light .sd-wrap.on .sd-label { color:var(--accent); }

/* ── Sections ── */
.snap { position:fixed; inset:0; padding-top:var(--nav-h); display:flex; flex-direction:column; overflow:hidden; visibility:hidden; will-change:transform; }
.snap.active { visibility:visible; }
.snap.light { background:var(--bg); }
.snap.lite  { background:var(--surface); }
.snap.dark  { background:var(--dk); }
.snap.light,.snap.lite { --s1:var(--ink); --s2:var(--ink2); --s3:var(--ink3); --sr:var(--border); --scbg:var(--muted-bg); --sfill:var(--accent); --sacc:var(--accent); --sacc-bg:var(--accent-bg); }
.snap.dark { --s1:var(--dk-pr); --s2:var(--dk-sec); --s3:var(--dk-mut); --sr:var(--dk-bor); --scbg:var(--dk-sur); --sfill:var(--dk-acc); --sacc:var(--dk-acc); --sacc-bg:var(--dk-acc-bg); }

.inner { max-width:var(--max-w); width:100%; margin:0 auto; padding:2.8rem 2.5rem 0; flex:1; display:flex; flex-direction:column; justify-content:flex-start; overflow:hidden; opacity:0; transition:opacity .45s ease-out .38s; }
.hero-inner { justify-content:center; align-items:center; padding-top:0; }
.snap.active .inner { opacity:1; }
.sk-fill, .lang-fill { transform-origin:left; transform:scaleX(0); transition:transform .75s cubic-bezier(.16,1,.3,1) .55s; }
.snap.active .sk-fill, .snap.active .lang-fill { transform:scaleX(1); }

/* ── Section header ── */
.sec-hd { display:flex; align-items:baseline; gap:.85rem; border-bottom:1px solid var(--sr,var(--border)); padding-bottom:.7rem; margin-bottom:1.8rem; flex-shrink:0; }
.sec-num { font-size:.6rem; color:var(--sacc,var(--accent)); letter-spacing:.14em; font-weight:600; }
.sec-title { font-family:'Archivo',sans-serif; font-size:.8rem; font-weight:700; text-transform:uppercase; letter-spacing:.2em; color:var(--s1); }

/* ── Tags ── */
.tag { display:inline-block; background:var(--scbg,var(--muted-bg)); border:1px solid var(--sr,var(--border)); color:var(--s2,var(--ink2)); padding:.2em .65em; font-size:.67rem; margin:.1rem; border-radius:var(--r-pill); font-weight:500; }
.dots { display:inline-flex; gap:.3rem; vertical-align:middle; }
.dot  { width:.5rem; height:.5rem; border-radius:50%; background:var(--sr,var(--border)); }
.dot.on { background:var(--sfill,var(--accent)); }

/* ── Scroll hint ── */
.scroll-hint { position:absolute; bottom:1.4rem; left:50%; margin-left:-.5px; width:1px; height:2rem; background:linear-gradient(to bottom,var(--s3,var(--ink3)),transparent); transform-origin:top center; animation:drop-line 2.4s ease-in-out infinite; }
@keyframes drop-line { 0%{opacity:0;transform:scaleY(0)} 45%{opacity:.5;transform:scaleY(1)} 100%{opacity:0;transform:scaleY(1)} }

/* ══ Hero ══ */
.hero-grid { display:flex; align-items:center; gap:3rem; }
.photo-box { width:8rem; height:8rem; border-radius:50%; overflow:hidden; flex-shrink:0; border:2px solid var(--dk-bor); }
.hero-name { font-family:'Archivo',sans-serif; font-size:3.4rem; font-weight:700; color:var(--dk-pr); letter-spacing:-.02em; line-height:1; margin-bottom:.5rem; }
.hero-headline { font-size:.95rem; font-weight:400; color:var(--dk-sec); margin-bottom:.25rem; }
.hero-sub  { font-size:.73rem; color:var(--dk-mut); margin-bottom:1.4rem; }
.hero-rule { width:2.2rem; height:2px; background:var(--dk-acc); border-radius:var(--r-pill); margin-bottom:1.1rem; }
.contact-row { display:flex; align-items:center; gap:.6rem; margin:.35rem 0; color:var(--dk-sec); }
.contact-row .icon { color:var(--dk-mut); font-size:.85rem; }
.c-text { font-size:.78rem; }
.social-strip { display:flex; gap:.42rem; flex-wrap:wrap; margin-top:1rem; }
.soc-chip { height:1.7rem; padding:0 .9rem; background:transparent; border:1px solid var(--dk-bor); border-radius:var(--r-pill); display:flex; align-items:center; font-size:.7rem; gap:.38rem; color:var(--dk-sec); cursor:pointer; font-weight:500; text-decoration:none; transition:border-color .2s,color .2s,background .2s; }
.soc-chip:hover { border-color:var(--dk-acc); color:var(--dk-pr); background:var(--dk-acc-bg); }
.soc-chip .icon { font-size:.82rem; }

/* ══ Summary ══ */
.summary-text { font-size:1.12rem; font-weight:400; color:var(--s2); line-height:1.85; max-width:52ch; }

/* ══ Timeline ══ */
.timeline { display:flex; flex-direction:column; }
.tl-entry { display:grid; grid-template-columns:5.5rem 1px 1fr; gap:0 1.5rem; }
.tl-date  { text-align:right; font-size:.63rem; color:var(--s3); padding-top:.18rem; line-height:1.65; white-space:nowrap; }
.tl-spine { display:flex; flex-direction:column; align-items:center; }
.tl-dot   { width:8px; height:8px; border-radius:50%; background:var(--sfill,var(--accent)); flex-shrink:0; margin-top:.2rem; box-shadow:0 0 0 3px var(--sacc-bg,var(--accent-bg)); }
.tl-line  { width:1px; background:var(--sr); flex:1; margin-top:.35rem; }
.tl-body  { padding:0 0 1.8rem; }
.tl-role  { font-family:'Archivo',sans-serif; font-size:.97rem; font-weight:700; color:var(--s1); }
.tl-org   { font-size:.78rem; color:var(--s2); margin-top:.18rem; }
.tl-loc   { font-size:.7rem; color:var(--s3); margin-top:.1rem; }
.tl-desc  { font-size:.78rem; color:var(--s3); margin-top:.65rem; line-height:1.72; max-width:56ch; }
.tl-tags  { margin-top:.65rem; }
.tl-hi    { font-size:.75rem; color:var(--s3); padding-left:1.1rem; margin-top:.55rem; line-height:1.75; }

/* ══ Skills ══ */
.skills-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:0 2.8rem; }
.sk-group-title { font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.13em; color:var(--s3); border-bottom:1px solid var(--sr); padding-bottom:.5rem; margin-bottom:1.1rem; }
.sk-row { margin-bottom:.9rem; }
.sk-label { display:flex; justify-content:space-between; font-size:.78rem; color:var(--s2); margin-bottom:.3rem; }
.sk-label span:last-child { font-size:.68rem; color:var(--s3); }
.sk-track { background:var(--sr); height:3px; border-radius:var(--r-pill); overflow:hidden; }
.sk-fill  { background:var(--sfill,var(--accent)); height:100%; border-radius:var(--r-pill); }

/* ══ Languages ══ */
.lang-list { display:flex; flex-direction:column; }
.lang-entry { display:grid; grid-template-columns:1fr auto; align-items:center; gap:2rem; padding:1.15rem 0; border-bottom:1px solid var(--sr); }
.lang-entry:first-child { border-top:1px solid var(--sr); }
.lang-name  { font-family:'Archivo',sans-serif; font-size:.97rem; font-weight:700; color:var(--s1); }
.lang-level { font-size:.7rem; color:var(--s3); margin-top:.22rem; }
.lang-track { background:var(--sr); height:3px; border-radius:var(--r-pill); overflow:hidden; }
.lang-fill  { background:var(--sfill,var(--accent)); height:100%; border-radius:var(--r-pill); }

/* ══ Projects ══ */
.proj-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(22rem,1fr)); gap:2rem; }
.proj-col  { }
.proj-title { font-family:'Archivo',sans-serif; font-size:1.1rem; font-weight:700; color:var(--s1); line-height:1.25; }
.proj-meta  { font-size:.72rem; color:var(--s3); margin-top:.4rem; }
.proj-desc  { font-size:.8rem; color:var(--s2); margin-top:.9rem; line-height:1.72; }
.proj-links { font-size:.7rem; color:var(--s3); margin-top:.9rem; }

/* ══ Publications ══ */
.pub-entry { padding:1.1rem 0; border-bottom:1px solid var(--sr); }
.pub-entry:first-child { border-top:1px solid var(--sr); }
.pub-num   { font-size:.6rem; color:var(--s3); letter-spacing:.12em; text-transform:uppercase; margin-bottom:.4rem; }
.pub-title { font-family:'Archivo',sans-serif; font-size:.92rem; font-weight:700; color:var(--s1); }
.pub-meta  { font-size:.73rem; color:var(--s3); margin-top:.28rem; line-height:1.65; }

/* ══ Item list (certs / awards / courses) ══ */
.item-entry { padding:1rem 0; border-bottom:1px solid var(--sr); display:grid; grid-template-columns:1fr auto; align-items:baseline; gap:1.5rem; }
.item-entry:first-child { border-top:1px solid var(--sr); }
.item-title { font-family:'Archivo',sans-serif; font-size:.92rem; font-weight:700; color:var(--s1); }
.item-sub   { font-size:.76rem; color:var(--s2); margin-top:.2rem; }
.item-note  { font-size:.7rem; color:var(--s3); margin-top:.15rem; }
.item-date  { font-size:.68rem; color:var(--s3); white-space:nowrap; text-align:right; }

/* ══ Speaking ══ */
.speaking-entry { padding:1.6rem 0; border-top:1px solid var(--sr); border-bottom:1px solid var(--sr); display:grid; grid-template-columns:1fr auto; gap:2rem; align-items:start; }
.sp-title { font-family:'Archivo',sans-serif; font-size:1.05rem; font-weight:700; color:var(--s1); }
.sp-meta  { font-size:.78rem; color:var(--s2); margin-top:.4rem; line-height:1.65; }
.sp-links { font-size:.72rem; color:var(--s3); text-align:right; line-height:2.3; }

/* ══ References / Portfolio ══ */
.ref-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1.2rem; }
.ref-col  { padding:1.4rem 1.2rem; border:1px solid var(--sr); border-radius:var(--r-md); background:var(--scbg,var(--dk-sur)); }
.ref-name    { font-family:'Archivo',sans-serif; font-size:1rem; font-weight:700; color:var(--s1); }
.ref-title   { font-size:.76rem; color:var(--s2); margin-top:.35rem; }
.ref-rel     { font-size:.7rem; color:var(--s3); margin-top:.6rem; font-style:italic; }
.ref-contact { font-size:.7rem; color:var(--s3); margin-top:.2rem; }

@media (prefers-reduced-motion:reduce) { .inner,.sk-fill,.lang-fill{transition-duration:.01ms!important} .scroll-hint{animation:none} }

@media (max-width:640px) {
  .skills-grid { grid-template-columns:1fr !important; gap:0 !important; }
  .inner { overflow-y:auto !important; -webkit-overflow-scrolling:touch; min-height:0; }
  /* Side nav labels: hidden by default on touch, briefly shown after navigation */
  .side-nav.on-dark .sd-wrap.on .sd-label,
  .side-nav.on-light .sd-wrap.on .sd-label { opacity:0; transition:opacity .4s; }
  .side-nav.labels-visible .sd-wrap.on .sd-label { opacity:1; }
}

/* ── Print footer (hidden on screen, fixed on every print page) ── */
#print-footer { display:none; }

/* ── View-all button (shown when ?incl= is active) ── */
#view-all-btn { position:fixed; bottom:1.5rem; right:1.5rem; width:2.75rem; height:2.75rem; background:var(--dk-acc); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; text-decoration:none; z-index:300; box-shadow:0 2px 16px rgba(0,0,0,.5); transition:opacity .18s,transform .18s; }
#view-all-btn:hover { opacity:.85; transform:scale(1.1); }
#view-all-btn svg { width:1.1rem; height:1.1rem; pointer-events:none; }
@media print { #view-all-btn { display:none !important; } }

/* ── Print icon ── */
.i-print { -webkit-mask-image:url(https://unpkg.com/lucide-static@latest/icons/printer.svg); mask-image:url(https://unpkg.com/lucide-static@latest/icons/printer.svg); }
.print-btn { background:transparent; border:none; color:var(--dk-mut); cursor:pointer; padding:.28rem .4rem; display:flex; align-items:center; border-radius:var(--r-sm); transition:color .2s; margin-left:.3rem; }
.print-btn:hover { color:var(--dk-pr); }
.print-btn .icon { width:1rem; height:1rem; }

/* ══ Print / PDF ══ */
@media print {
  @page {
    margin:1.3cm 1.5cm 2.2cm;
    size:A4 portrait;
    @bottom-left {
      content: counter(page);
      font-family:'Space Grotesk',sans-serif;
      font-size:7.5pt;
      color:#6366F1;
      letter-spacing:.06em;
    }
    @bottom-center {
      content: "https://ilia.kalina.uk";
      font-family:'Space Grotesk',sans-serif;
      font-size:7.5pt;
      color:#6366F1;
      letter-spacing:.06em;
    }
  }

  /* 14px base ≈ 10.5pt - readable CV body copy */
  html { font-size:14px !important; }

  /* Remap dark tokens to light so hero prints with dark ink */
  :root {
    --dk:#FFFFFF; --dk-sur:#F4F4F5;
    --dk-pr:#09090B; --dk-sec:#3F3F46; --dk-mut:#71717A;
    --dk-bor:#E4E4E7; --dk-acc:#2563EB; --dk-acc-bg:rgba(37,99,235,0.09);
  }

  html, body { overflow:visible !important; height:auto !important; background:#fff !important; }
  .top-nav, .side-nav, .scroll-hint, .print-btn { display:none !important; }
  .sec-num { display:none !important; }
  #cv-root { display:block !important; }

  /* ── 2-col sidebar: float so right column expands to full width once sidebar ends ── */
  #print-layout { display:block; }
  #print-left { float:left; width:26%; margin-right:1.5rem; }
  #print-right { display:flow-root; min-width:0; }

  /* Left sidebar: indigo-50 tint - clearly distinct, matches accent family */
  #print-left {
    background:#EEF2FF;
    border-radius:.35rem;
    padding:.9rem .95rem;
  }
  /* Sidebar section dividers and header rules use indigo-200 for cohesion */
  #print-left .snap + .snap { border-top-color:#C7D2FE !important; }
  #print-left .sec-hd { border-bottom-color:#C7D2FE !important; }

  /* Unstack all sections */
  .snap {
    position:static !important; visibility:visible !important;
    transform:none !important; height:auto !important; min-height:0 !important;
    overflow:visible !important; padding-top:0 !important; display:block !important;
    background:transparent !important; break-inside:auto;
  }
  /* Section separator: attached to the header so it can never be left alone on the previous page */
  .snap + .snap { border-top:none; padding-top:0; margin-top:.7rem; }
  .snap + .snap .sec-hd { border-top:1px solid #E4E4E7 !important; padding-top:.4rem !important; }
  .tl-entry { break-inside:avoid; }
  .item-entry { break-inside:avoid; }
  #print-left { break-inside:avoid; }

  /* Inner panels */
  .inner { opacity:1 !important; max-width:100% !important; width:100% !important; padding:.4rem 0 .2rem !important; overflow:visible !important; height:auto !important; flex:none !important; }

  /* Section headers - never orphan from first item; always span full column width */
  .sec-hd { padding-bottom:.35rem !important; margin-bottom:.8rem !important; break-after:avoid; width:100% !important; }

  /* ── Left sidebar: Hero ── */
  .hero-grid { height:auto !important; display:flex !important; gap:1.2rem !important; align-items:center !important; }
  .photo-box { display:none !important; }
  .hero-name { font-size:1.55rem !important; margin-bottom:.22rem !important; letter-spacing:-.01em !important; line-height:1.1 !important; }
  .hero-headline { font-size:.8rem !important; margin-bottom:.15rem !important; }
  .hero-rule { margin-bottom:.55rem !important; width:1.8rem !important; }
  /* Contact rows: hide icons (mask-image CDN unreliable at print time) so text sits flush */
  .contact-row { margin:.14rem 0 !important; gap:0 !important; }
  .contact-row .icon { display:none !important; }
  .c-text { font-size:.73rem !important; }
  .social-strip { display:none !important; }

  /* ── Per-page footer — handled by @page named margin boxes above ── */
  #print-footer { display:none !important; }

  /* ── Left sidebar: Skills - 1 column ── */
  .skills-grid { grid-template-columns:1fr !important; gap:0 !important; }
  .sk-group-title { margin-bottom:.5rem !important; padding-bottom:.32rem !important; }
  .sk-row { margin-bottom:.45rem !important; }

  /* ── Left sidebar: Languages ── */
  .lang-entry { padding:.45rem 0 !important; gap:.7rem !important; }

  /* ── Right column: remove char-width caps ── */
  .summary-text, .tl-desc, .tl-hi { max-width:none !important; }
  .summary-text { font-size:.82rem !important; line-height:1.6 !important; }

  /* Timeline */
  .tl-entry { grid-template-columns:4.2rem 1fr !important; gap:0 .8rem !important; }
  .tl-body { padding-bottom:.7rem !important; }
  .tl-date { font-size:.62rem !important; }
  .tl-tags { flex-wrap:wrap !important; }
  .tag { font-size:.6rem !important; padding:.1em .4em !important; }
  .tl-desc { margin-top:.3rem !important; line-height:1.5 !important; }
  .tl-hi { margin-top:.3rem !important; line-height:1.5 !important; }
  .tl-tags { margin-top:.3rem !important; }
  .tl-dot, .tl-line { display:none !important; }
  .tl-spine { display:none !important; }

  /* Projects - 2 col, fills all available horizontal space */
  .proj-grid { width:100% !important; gap:1rem !important; grid-template-columns:repeat(2,1fr) !important; }
  .proj-meta { margin-top:.2rem !important; }
  .proj-desc { margin-top:.4rem !important; line-height:1.5 !important; }
  .proj-links { margin-top:.4rem !important; }

  /* Certifications */
  .item-entry { padding:.45rem 0 !important; }

  /* Dots */
  .dot.on { background:#2563EB !important; }

  /* Tags */
  .tag { border:1px solid #C7D2FE !important; background:#EEF2FF !important; color:#3730A3 !important; }

  a { text-decoration:none !important; color:inherit !important; }

  /* ── Orphan / widow control ── */
  .tl-desc, .tl-hi, .item-note, .summary-text { orphans:3; widows:3; }

  /* ── Project cards: keep each card together ── */
  .proj-col { break-inside:avoid; }

  /* ── On full-width pages (after float ends) cap line length ── */
  .tl-desc { max-width:75ch !important; }
  .item-note { max-width:72ch !important; }
  .proj-desc { max-width:none !important; }

  /* ── Tighten certification entries ── */
  .item-title { font-size:.85rem !important; }
  .item-sub   { font-size:.72rem !important; }
  .item-note  { font-size:.67rem !important; line-height:1.45 !important; }
  .item-date  { font-size:.65rem !important; }
}
