MediaWiki:Print.css: Difference between revisions
		
		
		
		Jump to navigation
		Jump to search
		
No edit summary Tag: Manual revert  | 
				No edit summary  | 
				||
| Line 1: | Line 1: | ||
/* ===========================  | /* ===========================  | ||
    Softwear — Print stylesheet  |     Softwear — Print stylesheet (stable Chrome PDF)  | ||
    A5 portrait, minimal margins  |     A5 portrait, minimal margins  | ||
    =========================== */  |     =========================== */  | ||
/*   | /* 1) Font face */  | ||
@font-face {  | @font-face {  | ||
   font-family: 'HALColant-TextRegular';  |    font-family: 'HALColant-TextRegular';  | ||
| Line 14: | Line 14: | ||
}  | }  | ||
/*   | /* 2) Print color fidelity (kept) */  | ||
* { -webkit-print-color-adjust: exact; print-color-adjust: exact; }  | * { -webkit-print-color-adjust: exact; print-color-adjust: exact; }  | ||
/*   | /* 3) Base visibility & typography */  | ||
.print-only { display: block !important; }   | .print-only { display: block !important; }  | ||
html, body {  | html, body {  | ||
| Line 24: | Line 24: | ||
   padding: 0;  |    padding: 0;  | ||
   font-family: 'HALColant-TextRegular', Georgia, "Times New Roman", serif;  |    font-family: 'HALColant-TextRegular', Georgia, "Times New Roman", serif;  | ||
   color: #  |    color: #292828 !important;  | ||
}  | }  | ||
/*   | /* 4) Page + container */  | ||
@page { size: A5 portrait; margin: 2.5mm; }  | |||
.entry-wrapper.print-a5 {  | .entry-wrapper.print-a5 {  | ||
   width: 100%;  |    width: 100%;  | ||
   box-sizing: border-box;  |    box-sizing: border-box;  | ||
   padding: 2.5mm;   |    padding: 2.5mm;  | ||
}  | }  | ||
/*   | /* 5) Titles & people */  | ||
.article-title {  | .article-title {  | ||
   font-size: 22px;  |    font-size: 22px;  | ||
| Line 49: | Line 42: | ||
   letter-spacing: 0.8px;  |    letter-spacing: 0.8px;  | ||
   text-align: center;  |    text-align: center;  | ||
   margin: 0;  |    margin: 0;  | ||
}  | }  | ||
| Line 59: | Line 51: | ||
   text-align: center;  |    text-align: center;  | ||
   text-decoration: underline;  |    text-decoration: underline;  | ||
   margin: 0;  |    margin: 0;  | ||
   padding-top: 15px;  |    padding-top: 15px;  | ||
}  | }  | ||
.article-people a { text-decoration: underline; color: #292828 !important; }  | |||
.article-  | /* 6) Unified bottom-rule helper (robust in Chrome PDF)  | ||
   Apply to the specific blocks below via grouped selectors.  | |||
   color:   |    We give each block a tiny bottom padding so the rule has room. */  | ||
.article-entry-number,  | |||
.link-pdf,  | |||
.article-type,  | |||
.article-metadata,  | |||
.article-images,  | |||
.article-description,  | |||
.article-reflection,  | |||
.article-external-reference,  | |||
.article-quote,  | |||
.article-mod-line {  | |||
   position: relative;  | |||
  padding-bottom: 7px; /* uniform space for the rule */  | |||
}  | |||
.article-entry-number::after,  | |||
.link-pdf::after,  | |||
.article-type::after,  | |||
.article-metadata::after,  | |||
.article-images::after,  | |||
.article-description::after,  | |||
.article-reflection::after,  | |||
.article-external-reference::after,  | |||
.article-quote::after,  | |||
.article-mod-line::after {  | |||
  content: "";  | |||
  position: absolute;  | |||
  left: 0; right: 0; bottom: 0;  | |||
   height: 1px;                 /* device pixel row */  | |||
  background: #000;            /* rule color */  | |||
  transform: scaleY(0.5);      /* hairline look without relying on backgrounds */  | |||
  transform-origin: 50% 100%;  | |||
}  | }  | ||
/*   | /* 7) Entry number row */  | ||
.article-entry-number {  | .article-entry-number {  | ||
   font-size: 16px;  |    font-size: 16px;  | ||
| Line 75: | Line 98: | ||
   letter-spacing: 0;  |    letter-spacing: 0;  | ||
   margin: 0;  |    margin: 0;  | ||
}  | }  | ||
/*   | /* 8) Centered link row ([PDF⤴] [WEB⤴]) */  | ||
.link-pdf {  | .link-pdf {  | ||
   text-align: center;  |    text-align: center;  | ||
| Line 90: | Line 106: | ||
   text-decoration: none;  |    text-decoration: none;  | ||
   margin: 4px 0 0 0;  |    margin: 4px 0 0 0;  | ||
   padding  |    padding-top: 0;  | ||
}  | }  | ||
.link-pdf a, .link-pdf p {  | |||
.link-pdf a,  | |||
.link-pdf p {  | |||
   display: inline-block;  |    display: inline-block;  | ||
   text-decoration: none;  |    text-decoration: none;  | ||
| Line 107: | Line 116: | ||
}  | }  | ||
/*   | /* 9) Type line */  | ||
.article-type {  | .article-type {  | ||
   font-size: 16px;  |    font-size: 16px;  | ||
| Line 113: | Line 122: | ||
   letter-spacing: 0;  |    letter-spacing: 0;  | ||
   margin: 0;  |    margin: 0;  | ||
   padding: 7px   |    padding-top: 7px;  | ||
   color: #292828 !important;  |    color: #292828 !important;  | ||
}  | }  | ||
.article-type a { text-decoration: none; color: #292828 !important; }  | |||
/*   | /* 10) Metadata grid (no stray spacing) */  | ||
.article-metadata,  | .article-metadata,  | ||
.article-metadata * {  | .article-metadata * {  | ||
| Line 134: | Line 134: | ||
   background: none;  |    background: none;  | ||
}  | }  | ||
.article-metadata {  | .article-metadata {  | ||
   display: grid;  |    display: grid;  | ||
   grid-template-columns: repeat(3, 1fr);  |    grid-template-columns: repeat(3, 1fr);  | ||
   gap: 2mm;  |    gap: 2mm;  | ||
   padding: 11px   |    padding-top: 11px;  | ||
   line-height: 1 !important;  |    line-height: 1 !important;  | ||
}  | }  | ||
.article-metadata-label {  | .article-metadata-label {  | ||
   font-size: 13px;  |    font-size: 13px;  | ||
| Line 154: | Line 146: | ||
   letter-spacing: 0.3px;  |    letter-spacing: 0.3px;  | ||
}  | }  | ||
.article-metadata-value {  | .article-metadata-value {  | ||
   font-size: 15px;  |    font-size: 15px;  | ||
| Line 164: | Line 155: | ||
}  | }  | ||
/*   | /* 11) Image block (no gaps) */  | ||
.article-metadata + .article-images {  | .article-metadata + .article-images { margin-top: 0 !important; padding-top: 0 !important; }  | ||
}  | |||
.article-images {  | .article-images {  | ||
   margin: 0 !important;  |    margin: 0 !important;  | ||
   padding: 0 !important  |    padding-top: 0 !important;  | ||
}  | }  | ||
.article-images .image-container {  | .article-images .image-container {  | ||
   display: inline-flex;  |    display: inline-flex;  | ||
   flex-direction: column;   |    flex-direction: column;   /* image then caption */  | ||
   align-items: flex-start; /* left  |    align-items: flex-start;  /* left align */  | ||
   margin: 0 !important;  |    margin: 0 !important;  | ||
   padding: 0 !important;  |    padding: 0 !important;  | ||
}  | }  | ||
.article-images .image-container img,  | .article-images .image-container img,  | ||
.image-container img {  | .image-container img {  | ||
   display: block;  |    display: block;  | ||
   max-height: 85mm;   |    max-height: 85mm;  | ||
   height: auto;  |    height: auto;  | ||
   width: auto;  |    width: auto;  | ||
| Line 202: | Line 181: | ||
   line-height: 0;  |    line-height: 0;  | ||
}  | }  | ||
.caption-image1 {  | .caption-image1 {  | ||
   margin: 0 !important;  |    margin: 0 !important;  | ||
   padding:   |    padding: 0 !important;  | ||
   line-height: 1 !important;  |    line-height: 1 !important;  | ||
   font-size: 9pt;  |    font-size: 9pt;  | ||
| Line 212: | Line 190: | ||
   width: 100%;  |    width: 100%;  | ||
}  | }  | ||
.caption-image1:empty { display: none; }  | |||
/*   | /* 12) Labels & bodies (gap logic that doesn’t create blanks when sections are missing) */  | ||
.article-label-description,  | .article-label-description,  | ||
.article-label-reflection,  | .article-label-reflection,  | ||
| Line 223: | Line 199: | ||
.article-label-modification-date {  | .article-label-modification-date {  | ||
   text-transform: uppercase;  |    text-transform: uppercase;  | ||
   margin:   |    margin: 10px 0 0 0 !important;  /* small, consistent top margin */  | ||
   padding: 0 !important;  |    padding: 0 !important;  | ||
   text-indent: 35px;  |    text-indent: 35px;  | ||
| Line 229: | Line 205: | ||
   font-size: 14px;  |    font-size: 14px;  | ||
   letter-spacing: 0.5px;  |    letter-spacing: 0.5px;  | ||
  break-after: avoid; page-break-after: avoid; /* no orphan label */  | |||
}  | |||
/* If a label directly follows a “ruled” block, keep it tight */  | |||
.article-entry-number + .article-title-link .link-pdf + .article-type + .article-metadata + .article-label-description { margin-top: 8px !important; } /* very specific path, safe to ignore if it doesn't match */  | |||
.article-metadata + .article-label-description,  | |||
.article-images + .article-label-description,  | |||
.article-description + .article-label-reflection,  | |||
.article-reflection + .article-label-external-reference,  | |||
.article-external-reference + .article-label-quote,  | |||
.article-quote + .article-label-modification-date {  | |||
   margin-top: 10px !important;  | |||
}  | }  | ||
/* Bodies */  | |||
.article-description,  | .article-description,  | ||
.article-reflection,  | .article-reflection,  | ||
| Line 245: | Line 230: | ||
   letter-spacing: 0.8px;  |    letter-spacing: 0.8px;  | ||
   margin-top: 0 !important;  |    margin-top: 0 !important;  | ||
   padding:   |    padding-top: 0 !important;  | ||
}  | }  | ||
/*   | /* Keep label+body together */  | ||
.article-label-description + .article-description,  | .article-label-description + .article-description,  | ||
.article-label-reflection + .article-reflection,  | .article-label-reflection + .article-reflection,  | ||
| Line 265: | Line 239: | ||
.article-label-quote + .article-quote,  | .article-label-quote + .article-quote,  | ||
.article-label-modification-date + .article-modification-date {  | .article-label-modification-date + .article-modification-date {  | ||
   break-before: avoid;  |    break-before: avoid; page-break-before: avoid;  | ||
}  | }  | ||
/* 13) Quote look */  | |||
.article-quote {  | .article-quote {  | ||
   font-size: 26px;  |    font-size: 26px;  | ||
| Line 289: | Line 248: | ||
   letter-spacing: 1.2px;  |    letter-spacing: 1.2px;  | ||
   font-style: italic;  |    font-style: italic;  | ||
}  | }  | ||
.article-mod-line{  | /* 14) “Added on … To the softwear.directory” line (single line, with rule) */  | ||
.article-mod-line {  | |||
   white-space: nowrap;  | |||
   white-space:nowrap;  |    color: grey;  | ||
   color:grey;  |    line-height: 1;  | ||
   line-height:1;  |    font-size: 14px;  | ||
   font-size:14px;  |    letter-spacing: 0.5px;  | ||
   letter-spacing:0.5px;  |    margin: 7px 0 0 0 !important;  | ||
   margin:0  |    padding-top: 7px !important;  | ||
}  | }  | ||
.article-mod-line > span{  | .article-mod-line > span { display: inline; margin: 0; padding: 0; }  | ||
.article-mod-line > span + span { margin-left: 6px; }  | |||
.article-modification-date { font-size: 15px; letter-spacing: 0.5px; }  | |||
}  | |||
.article-mod-line > span + span{ margin-left:6px; }  | |||
.  | /* 15) Paragraph defaults from Vector that may sneak in */  | ||
.vector-body p { margin: 0 !important; padding: 0 !important; }  | |||
}  | |||
/*   | /* 16) Link printing */  | ||
a[href]:after { content: none !important; }  | |||
.  | .article-external-reference a {  | ||
  word-break: break-word;  | |||
  overflow-wrap: anywhere;  | |||
   text-decoration: none;  | |||
   color: #292828 !important;  | |||
   font-size: 17px;  | |||
   line-height: 1;  | |||
   letter-spacing: 0;  | |||
}  | }  | ||
/*   | /* 17) Keep things tidy across pages */  | ||
#article-content { orphans: 2; widows: 2; }  | |||
/*   | /* 18) Prevent bad splits on key blocks only */  | ||
.  | #article-title,  | ||
.article-title-link,  | |||
.article-metadata,  | |||
.article-images { break-inside: avoid; page-break-inside: avoid; }  | |||
Revision as of 10:47, 21 August 2025
/* ===========================
   Softwear — Print stylesheet (stable Chrome PDF)
   A5 portrait, minimal margins
   =========================== */
/* 1) Font face */
@font-face {
  font-family: 'HALColant-TextRegular';
  src: url('/fonts/HALColant-TextRegular.woff2?v=20250820') format('woff2'),
       url('/fonts/HALColant-TextRegular.woff?v=20250820')  format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
/* 2) Print color fidelity (kept) */
* { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
/* 3) Base visibility & typography */
.print-only { display: block !important; }
html, body {
  margin: 0;
  padding: 0;
  font-family: 'HALColant-TextRegular', Georgia, "Times New Roman", serif;
  color: #292828 !important;
}
/* 4) Page + container */
@page { size: A5 portrait; margin: 2.5mm; }
.entry-wrapper.print-a5 {
  width: 100%;
  box-sizing: border-box;
  padding: 2.5mm;
}
/* 5) Titles & people */
.article-title {
  font-size: 22px;
  line-height: 24px;
  letter-spacing: 0.8px;
  text-align: center;
  margin: 0;
}
.article-people {
  font-size: 22px;
  line-height: 28px;
  letter-spacing: 0.8px;
  text-align: center;
  text-decoration: underline;
  margin: 0;
  padding-top: 15px;
}
.article-people a { text-decoration: underline; color: #292828 !important; }
/* 6) Unified bottom-rule helper (robust in Chrome PDF)
   Apply to the specific blocks below via grouped selectors.
   We give each block a tiny bottom padding so the rule has room. */
.article-entry-number,
.link-pdf,
.article-type,
.article-metadata,
.article-images,
.article-description,
.article-reflection,
.article-external-reference,
.article-quote,
.article-mod-line {
  position: relative;
  padding-bottom: 7px; /* uniform space for the rule */
}
.article-entry-number::after,
.link-pdf::after,
.article-type::after,
.article-metadata::after,
.article-images::after,
.article-description::after,
.article-reflection::after,
.article-external-reference::after,
.article-quote::after,
.article-mod-line::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;                 /* device pixel row */
  background: #000;            /* rule color */
  transform: scaleY(0.5);      /* hairline look without relying on backgrounds */
  transform-origin: 50% 100%;
}
/* 7) Entry number row */
.article-entry-number {
  font-size: 16px;
  line-height: 23px;
  letter-spacing: 0;
  margin: 0;
}
/* 8) Centered link row ([PDF⤴] [WEB⤴]) */
.link-pdf {
  text-align: center;
  color: #292828 !important;
  text-decoration: none;
  margin: 4px 0 0 0;
  padding-top: 0;
}
.link-pdf a, .link-pdf p {
  display: inline-block;
  text-decoration: none;
  color: #292828 !important;
  margin: 0 !important;
  padding: 0 !important;
}
/* 9) Type line */
.article-type {
  font-size: 16px;
  line-height: 1;
  letter-spacing: 0;
  margin: 0;
  padding-top: 7px;
  color: #292828 !important;
}
.article-type a { text-decoration: none; color: #292828 !important; }
/* 10) Metadata grid (no stray spacing) */
.article-metadata,
.article-metadata * {
  margin: 0 !important;
  border: none;
  background: none;
}
.article-metadata {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2mm;
  padding-top: 11px;
  line-height: 1 !important;
}
.article-metadata-label {
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.article-metadata-value {
  font-size: 15px;
  text-transform: capitalize;
}
.article-metadata-value a {
  color: #292828 !important;
  text-decoration: none;
}
/* 11) Image block (no gaps) */
.article-metadata + .article-images { margin-top: 0 !important; padding-top: 0 !important; }
.article-images {
  margin: 0 !important;
  padding-top: 0 !important;
}
.article-images .image-container {
  display: inline-flex;
  flex-direction: column;   /* image then caption */
  align-items: flex-start;  /* left align */
  margin: 0 !important;
  padding: 0 !important;
}
.article-images .image-container img,
.image-container img {
  display: block;
  max-height: 85mm;
  height: auto;
  width: auto;
  max-width: 100%;
  margin: 0 !important;
  padding: 0 !important;
  object-fit: contain;
  line-height: 0;
}
.caption-image1 {
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1 !important;
  font-size: 9pt;
  color: #555;
  text-align: left;
  width: 100%;
}
.caption-image1:empty { display: none; }
/* 12) Labels & bodies (gap logic that doesn’t create blanks when sections are missing) */
.article-label-description,
.article-label-reflection,
.article-label-external-reference,
.article-label-quote,
.article-label-modification-date {
  text-transform: uppercase;
  margin: 10px 0 0 0 !important;  /* small, consistent top margin */
  padding: 0 !important;
  text-indent: 35px;
  line-height: 1;
  font-size: 14px;
  letter-spacing: 0.5px;
  break-after: avoid; page-break-after: avoid; /* no orphan label */
}
/* If a label directly follows a “ruled” block, keep it tight */
.article-entry-number + .article-title-link .link-pdf + .article-type + .article-metadata + .article-label-description { margin-top: 8px !important; } /* very specific path, safe to ignore if it doesn't match */
.article-metadata + .article-label-description,
.article-images + .article-label-description,
.article-description + .article-label-reflection,
.article-reflection + .article-label-external-reference,
.article-external-reference + .article-label-quote,
.article-quote + .article-label-modification-date {
  margin-top: 10px !important;
}
/* Bodies */
.article-description,
.article-reflection,
.article-external-reference,
.article-quote,
.article-mod-line {
  text-indent: 35px;
  line-height: 1.3;
  font-size: 20px;
  letter-spacing: 0.8px;
  margin-top: 0 !important;
  padding-top: 0 !important;
}
/* Keep label+body together */
.article-label-description + .article-description,
.article-label-reflection + .article-reflection,
.article-label-external-reference + .article-external-reference,
.article-label-quote + .article-quote,
.article-label-modification-date + .article-modification-date {
  break-before: avoid; page-break-before: avoid;
}
/* 13) Quote look */
.article-quote {
  font-size: 26px;
  line-height: 1;
  letter-spacing: 1.2px;
  font-style: italic;
}
/* 14) “Added on … To the softwear.directory” line (single line, with rule) */
.article-mod-line {
  white-space: nowrap;
  color: grey;
  line-height: 1;
  font-size: 14px;
  letter-spacing: 0.5px;
  margin: 7px 0 0 0 !important;
  padding-top: 7px !important;
}
.article-mod-line > span { display: inline; margin: 0; padding: 0; }
.article-mod-line > span + span { margin-left: 6px; }
.article-modification-date { font-size: 15px; letter-spacing: 0.5px; }
/* 15) Paragraph defaults from Vector that may sneak in */
.vector-body p { margin: 0 !important; padding: 0 !important; }
/* 16) Link printing */
a[href]:after { content: none !important; }
.article-external-reference a {
  word-break: break-word;
  overflow-wrap: anywhere;
  text-decoration: none;
  color: #292828 !important;
  font-size: 17px;
  line-height: 1;
  letter-spacing: 0;
}
/* 17) Keep things tidy across pages */
#article-content { orphans: 2; widows: 2; }
/* 18) Prevent bad splits on key blocks only */
#article-title,
.article-title-link,
.article-metadata,
.article-images { break-inside: avoid; page-break-inside: avoid; }