/* ==========================================================
   PRINT / PDF — A4 "Lebenslauf"
   This is the ONLY stylesheet that defines print rules. The screen
   sheets (index.html <style>, styles.css, gallery.css, media-viewer.css)
   deliberately contain no @media print block, so printed output is
   decided in exactly one place.

   Layout: printed letterhead (hero + portrait + overview strip), then
   one section per block with an index/title rail on the left and
   full-width content on the right. A4, 11/13 mm margins.
   ========================================================== */

@page { size: A4; margin: 10mm 13mm 11mm; }

@media print {
  :root{
    --bg:#ffffff; --bg-alt:#ffffff;
    --ink:#18201d; --ink-dim:#3f4a44; --ink-mute:#5a655f; --ink-faint:#6d786f;
    --hairline:#dcdfda; --hairline-strong:#c2c8c1;
    --red:#7d3841;              /* a touch deeper than screen: keeps contrast on paper */
    --red-hot:#7d3841;
    --on-red:#ffffff;
    --gutter:0px; --header-h:0px;
  }

  html,body{
    background:#fff; color:var(--ink);
    color-scheme:light;
    font-size:8.6pt; line-height:1.38;
    overflow:visible;
    -webkit-print-color-adjust:exact; print-color-adjust:exact;
  }
  *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  a{ color:inherit; text-decoration:none; }
  img{ max-width:100%; }
  .container{ width:100%; }
  .reveal{ opacity:1 !important; transform:none !important; }

  /* ---------- screen-only chrome ---------- */
  .site-header,.mobile-menu,.burger,.brand,.nav-links,.header-actions,.hero-actions,.btn,
  .skip-link,.to-top,.site-footer,.print-toolbar,.preview-banner,.print-header,.ph-row,
  .grain,.grid-lines,.ticker,.scroll-row,.socials,.watermark,.status-chip,.stats,
  .letter-downloads,.print-only,.contact-note,.bar,.dots,#lightbox,.lightbox{ display:none !important; }

  /* ---------- letterhead ---------- */
  .hero{ display:block !important; min-height:0; padding:0 0 1.4mm; background:none; }
  .hero-inner{ display:grid; grid-template-columns:minmax(0,1fr) 29mm; gap:2.4mm 7mm; align-items:start; }
  .eyebrow{ margin:0 0 1.6mm; font-family:var(--mono); font-size:6.2pt; letter-spacing:.08em;
            text-transform:uppercase; color:var(--red); }
  .eyebrow span{ color:var(--red); margin-inline:0 1mm; }
  .hero-name{ margin:0 0 1.6mm; font-size:22pt; line-height:1; letter-spacing:-.03em; font-weight:600; }
  .hero-name br{ display:none; }
  .hero-sub{ margin:0 0 1.2mm; font-size:10pt; font-weight:500; line-height:1.28; letter-spacing:-.01em; }
  .hero-pitch{ margin:0; font-size:7.8pt; line-height:1.4; max-width:none; }
  .portrait-wrap{ width:29mm; margin:0; }
  .portrait-frame{ padding:1.1mm; border:1px solid var(--hairline); border-radius:2px; background:#fff; }
  .portrait-frame img{ display:block; width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:center 32%; }
  .portrait-wrap figcaption{ margin:1.4mm 0 0; padding:0; }
  .portrait-caption{ display:block; font-size:6pt; font-weight:600; }
  .portrait-caption-sub{ display:block; margin-top:.3mm; font-size:5.6pt; color:var(--ink-dim); }

  .overview{ grid-column:1 / -1; display:grid; grid-template-columns:1fr 1.05fr 1.05fr; gap:5mm;
             margin:2.4mm 0 0; padding:1.8mm 0 0; border-top:1.2pt solid var(--red); }
  .overview dt{ margin:0 0 .6mm; font-family:var(--mono); font-size:5.8pt; letter-spacing:.08em;
                text-transform:uppercase; color:var(--red); }
  .overview dd{ margin:0; font-size:7.8pt; font-weight:600; }
  .overview .overview-note{ margin:.3mm 0 0; font-size:6.4pt; font-weight:400; color:var(--ink-dim); }

  /* ---------- sections: rail + content ---------- */
  .section,.section.alt{ padding:0; background:none; border:0; }
  .section > .container{ display:grid; grid-template-columns:26mm minmax(0,1fr); column-gap:5mm;
                         align-items:start; padding-top:1.6mm; }
  .section + .section > .container{ margin-top:1.6mm; border-top:1px solid var(--hairline); }
  .section > .container > :not(.sec-head){ grid-column:2; }
  .sec-head{ grid-column:1; grid-row:1; display:block; margin:0; break-after:avoid; }
  .sec-index{ display:block; margin:0 0 .6mm; font-family:var(--mono); font-size:6pt; color:var(--red); }
  .sec-title{ margin:0; font-size:11pt; font-weight:600; line-height:1.18; letter-spacing:-.01em; }
  .sec-tag{ display:block; margin-top:1mm; font-size:6.2pt; color:var(--ink-mute);
            text-transform:none; letter-spacing:0; white-space:normal; }
  .sec-line{ display:none; }

  /* long lines must use the full column, not a shrinking ch limit */
  .profil-copy p,.hero-pitch,.contact-sub,.interests-list p,.tl-item p,
  .project-description,.project-highlights,.motivation-letter{ max-width:none !important; }

  /* ---------- profile ---------- */
  .pullquote{ display:block; margin:0 0 1.8mm; padding:0; border:0;
              font-size:10pt; font-weight:500; line-height:1.32; letter-spacing:-.015em; }
  .pullquote .hl{ color:var(--red); }
  .profil-copy p{ margin:0 0 1.2mm; font-size:8pt; line-height:1.4; }
  .profil-copy p + p{ margin-top:1.2mm; }
  .profil-copy strong{ font-weight:600; }

  /* ---------- education ---------- */
  .timeline{ display:block; margin:0; padding:0; }
  .timeline::before,.tl-item::before{ display:none; }
  .tl-item{ display:grid; grid-template-columns:23mm minmax(0,1fr); gap:.4mm 3mm;
            padding:0 0 1.1mm; break-inside:avoid; }
  .tl-item + .tl-item{ border-top:1px solid var(--hairline); padding-top:1.1mm; }
  .tl-top{ grid-column:1; grid-row:1 / 3; display:block; margin:0; }
  .tl-years{ display:block; font-size:6.8pt; color:var(--ink-dim); }
  .tag{ display:inline-block; width:auto; margin:.7mm 0 0; padding:.2mm 1.2mm; border:0; border-radius:2px;
        background:#f2f4f1; font-size:5.8pt; color:var(--ink-dim); }
  .tl-item h3,.tl-item p{ grid-column:2; }
  .tl-item h3{ margin:0 0 .4mm; font-size:8.2pt; font-weight:600; line-height:1.28; }
  .tl-item h3 svg{ display:none; }
  .tl-item p{ margin:0; font-size:7.2pt; color:var(--ink-dim); }

  /* ---------- projects ---------- */
  .projects{ display:block; margin:0; }
  .project-card{ display:block; padding:0 0 1.3mm; }
  .project-card + .project-card{ margin-top:1.3mm; padding-top:1.3mm; border-top:1px solid var(--hairline); }
  .pc-head{ display:flex; justify-content:space-between; gap:4mm; }
  .pc-index,.pc-date{ font-size:6pt; color:var(--ink-mute); letter-spacing:.02em; }
  .pc-titlerow{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between;
                gap:.6mm 4mm; margin:.7mm 0 1.2mm; break-after:avoid; }
  .project-card h3{ margin:0; font-size:10pt; font-weight:600; line-height:1.24; letter-spacing:-.015em; }
  .pc-role{ font-size:6.6pt; color:var(--ink-dim); }
  .project-description{ margin:0 0 1.2mm; font-size:7.2pt; line-height:1.4; }
  .pc-list{ margin:0; padding:0; }
  .pc-list li{ position:relative; margin:0 0 .35mm; padding-left:3mm; font-size:7.2pt; line-height:1.36; break-inside:avoid; }
  .pc-list li::before{ content:""; position:absolute; left:0; top:.55em; width:1.1mm; height:1.1mm;
                       border-radius:50%; background:var(--red); }
  /* the "Highlights / Nutzen" summary repeats the bullet list on paper */
  .project-highlights{ display:none !important; }
  .project-tools{ margin:1.2mm 0 0; padding:0; border:0; }
  .tools-title{ margin:0 0 .8mm; font-family:var(--mono); font-size:6pt; font-weight:500;
                letter-spacing:.08em; text-transform:uppercase; color:var(--ink-mute); }
  .pc-tags{ display:flex; flex-wrap:wrap; gap:1mm; margin:0; padding:0; list-style:none; }
  .tech-tag{ padding:.25mm 1.3mm; border:1px solid var(--hairline-strong); border-radius:2px;
             background:none; font-size:6pt; color:var(--ink-dim); }
  .project-link{ display:none; }

  /* project screenshots print small and only when the owner enabled them */
  .architecture{ display:none !important; }
  .project-media{ margin:1.6mm 0 0; }
  .project-gallery{ display:none !important; }
  .print-images .project-gallery{ display:grid !important; grid-template-columns:repeat(auto-fill,minmax(21mm,1fr));
                                  gap:2.2mm; margin:0; break-inside:avoid; }
  .print-images .architecture{ display:block !important; margin:1.6mm 0 0; background:none; color:inherit; break-inside:avoid; }
  .print-images .gallery-item a{ display:block; aspect-ratio:9 / 19.5; padding:0; border:1px solid var(--hairline);
                                 border-radius:1.5mm; background:#fff; overflow:hidden; }
  .print-images .gallery-item img{ width:100%; height:100%; padding:.8mm; object-fit:contain; }
  .print-images .gallery-item figcaption{ margin-top:.8mm; font-size:5.2pt; line-height:1.28; }
  .print-images .architecture-heading h4{ font-size:7.4pt; }
  .print-images .architecture-heading a{ display:none; }
  .print-images .architecture figcaption{ padding:1mm 0 0; font-size:5.4pt; color:var(--ink-dim); }
  .gallery-item a > span{ display:none; }

  /* ---------- skills ---------- */
  .skills-wrap{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.4mm 5mm; margin:0; }
  .skill-group{ break-inside:avoid; }
  .skill-group:last-child{ display:block; grid-column:auto; }
  .group-label{ margin:0 0 .8mm; padding:0 0 .8mm; border-bottom:1px solid var(--hairline);
                font-size:6.6pt; font-weight:600; }
  .group-label .sq{ display:none; }
  .skill{ margin:0; padding:.2mm 0; }
  .skill:last-child{ border-bottom:0; }
  .skill-top{ margin:0; }
  .skill-name{ font-size:7pt; }
  .skill-pct,.bar,.dots,.skills-note{ display:none; }

  /* ---------- languages ---------- */
  .langs{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1.2mm 5mm; }
  .lang-card{ margin:0; padding:0 0 .5mm; border:0; border-bottom:1px solid var(--hairline);
              background:none; break-inside:avoid; }
  .lang-icon,.lvl-chip{ display:none; }
  .lang-name{ margin:0 0 .3mm; padding:0; font-size:7.8pt; font-weight:600; }
  .lang-level{ margin:0; font-size:6.8pt; color:var(--ink-dim); }
  .lang-note{ margin:.4mm 0 0; font-size:6pt; color:var(--ink-mute); }

  /* ---------- interests ---------- */
  .interests-list{ margin:0; padding:0; }
  .interests-list li{ display:grid; grid-template-columns:5mm minmax(0,1fr); gap:0 2mm;
                      padding:0 0 .6mm; break-inside:avoid; }
  .interests-list li + li{ margin-top:.6mm; padding-top:.6mm; border-top:1px solid var(--hairline); }
  .interest-number{ padding-top:.4mm; font-family:var(--mono); font-size:6pt; color:var(--ink-mute); }
  .interests-list h3{ margin:0 0 .4mm; font-size:7.8pt; font-weight:600; }
  .interests-list p{ margin:0; font-size:7pt; color:var(--ink-dim); }
  .interests-list svg{ display:none; }

  /* ---------- motivation letter ---------- */
  /* The Anschreiben is a separate application document (own PDF/Word download). Printing
     it inside the CV pushes the Lebenslauf onto a third page, so it stays out of the PDF. */
  .section:has(.motivation-letter){ display:none !important; }
  .motivation-letter,.letter-downloads{ display:none !important; }

  /* ---------- contact ---------- */
  .section.contact{ padding:0; background:none; }
  .section.contact > .container{ margin-top:1.6mm; border-top:1px solid var(--hairline); padding-top:1.6mm; }
  .contact-inner{ break-inside:avoid; }
  .giant{ margin:0 0 1.2mm; font-size:12pt; font-weight:600; letter-spacing:-.02em; }
  .contact-sub{ margin:0 0 1.6mm; font-size:7.4pt; color:var(--ink-dim); }
  .mail-link{ display:inline-flex; align-items:center; gap:2mm; padding-bottom:.4mm;
              border-bottom:1px solid var(--ink); font-size:9.5pt; font-weight:600; }
  .mail-link svg{ width:3.2mm; height:3.2mm; }
  .contact-meta{ display:flex; flex-wrap:wrap; gap:1.8mm 5mm; margin-top:2mm; padding-top:1.6mm;
                 border-top:1px solid var(--hairline); }
  .contact-meta .meta-item{ font-size:6.8pt; color:var(--ink-dim); }

  /* ---------- page breaks ---------- */
  h1,h2,h3,h4{ break-after:avoid-page; break-inside:avoid; }
  .sec-head,.pc-head,.pc-titlerow{ break-after:avoid; }
  .tl-item,.project-card,.lang-card,.skill-group,.interests-list li,.contact-inner,
  .print-images .project-gallery{ break-inside:avoid; }
  p,li{ orphans:2; widows:2; }
}
