Sharpness: crisp text rendering, GPU-composited images, geometric precision
Browse files- app/static/css/print.css +109 -0
app/static/css/print.css
CHANGED
|
@@ -40,6 +40,11 @@ body {
|
|
| 40 |
-webkit-print-color-adjust: exact;
|
| 41 |
print-color-adjust: exact;
|
| 42 |
background: #ffffff;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 43 |
}
|
| 44 |
|
| 45 |
/* ------------------------------
|
|
@@ -1454,4 +1459,108 @@ ol.hb-numbered-list li::marker {
|
|
| 1454 |
/* ββ Links β smooth colour transitions ββ */
|
| 1455 |
a {
|
| 1456 |
transition: color 0.15s ease, border-color 0.15s ease;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1457 |
}
|
|
|
|
| 40 |
-webkit-print-color-adjust: exact;
|
| 41 |
print-color-adjust: exact;
|
| 42 |
background: #ffffff;
|
| 43 |
+
/* Sharpness β crisp text rendering */
|
| 44 |
+
text-rendering: optimizeLegibility;
|
| 45 |
+
-webkit-font-smoothing: antialiased;
|
| 46 |
+
-moz-osx-font-smoothing: grayscale;
|
| 47 |
+
font-feature-settings: "kern" 1, "liga" 1;
|
| 48 |
}
|
| 49 |
|
| 50 |
/* ------------------------------
|
|
|
|
| 1459 |
/* ββ Links β smooth colour transitions ββ */
|
| 1460 |
a {
|
| 1461 |
transition: color 0.15s ease, border-color 0.15s ease;
|
| 1462 |
+
}
|
| 1463 |
+
|
| 1464 |
+
/* =========================================================
|
| 1465 |
+
SHARPNESS & CLARITY β Razor-crisp rendering
|
| 1466 |
+
========================================================= */
|
| 1467 |
+
|
| 1468 |
+
/* All images: high-quality scaling, no blur */
|
| 1469 |
+
img {
|
| 1470 |
+
image-rendering: auto;
|
| 1471 |
+
-webkit-backface-visibility: hidden;
|
| 1472 |
+
backface-visibility: hidden;
|
| 1473 |
+
transform: translateZ(0); /* GPU-composited layer */
|
| 1474 |
+
}
|
| 1475 |
+
|
| 1476 |
+
/* Icons, logos, QR codes: pixel-perfect edges */
|
| 1477 |
+
.hb-step-qr,
|
| 1478 |
+
.cover-img,
|
| 1479 |
+
.fullpage-img,
|
| 1480 |
+
.page-header img {
|
| 1481 |
+
image-rendering: -webkit-optimize-contrast;
|
| 1482 |
+
}
|
| 1483 |
+
|
| 1484 |
+
/* Borders β sharp 1px lines, never sub-pixel blurred */
|
| 1485 |
+
.hb-table,
|
| 1486 |
+
.hb-table th,
|
| 1487 |
+
.hb-table td,
|
| 1488 |
+
.tbl,
|
| 1489 |
+
.tbl th,
|
| 1490 |
+
.tbl td,
|
| 1491 |
+
.hb-programs,
|
| 1492 |
+
.hb-programs th,
|
| 1493 |
+
.hb-programs td {
|
| 1494 |
+
border-style: solid;
|
| 1495 |
+
-webkit-backface-visibility: hidden;
|
| 1496 |
+
}
|
| 1497 |
+
|
| 1498 |
+
/* Headings β sharper weight rendering */
|
| 1499 |
+
.hb-heading-1,
|
| 1500 |
+
.hb-heading-2,
|
| 1501 |
+
.hb-uni-name,
|
| 1502 |
+
.hb-step-title,
|
| 1503 |
+
.hb-benefits-bar,
|
| 1504 |
+
.toc-heading {
|
| 1505 |
+
text-rendering: geometricPrecision;
|
| 1506 |
+
-webkit-font-smoothing: antialiased;
|
| 1507 |
+
}
|
| 1508 |
+
|
| 1509 |
+
/* Paragraph text β optimal readability */
|
| 1510 |
+
.hb-paragraph,
|
| 1511 |
+
.p,
|
| 1512 |
+
p {
|
| 1513 |
+
text-rendering: optimizeLegibility;
|
| 1514 |
+
word-spacing: 0.02em;
|
| 1515 |
+
letter-spacing: 0.005em;
|
| 1516 |
+
}
|
| 1517 |
+
|
| 1518 |
+
/* Table text β precise rendering for dense data */
|
| 1519 |
+
.hb-table td,
|
| 1520 |
+
.hb-table th,
|
| 1521 |
+
.tbl td,
|
| 1522 |
+
.tbl th,
|
| 1523 |
+
.hb-programs td,
|
| 1524 |
+
.hb-programs th {
|
| 1525 |
+
text-rendering: geometricPrecision;
|
| 1526 |
+
}
|
| 1527 |
+
|
| 1528 |
+
/* Bullet markers β sharp glyph rendering */
|
| 1529 |
+
.hb-bullet-list li::before,
|
| 1530 |
+
.hb-sub-bullets li::before,
|
| 1531 |
+
.hb-benefits-ul li::before {
|
| 1532 |
+
text-rendering: geometricPrecision;
|
| 1533 |
+
-webkit-font-smoothing: antialiased;
|
| 1534 |
+
}
|
| 1535 |
+
|
| 1536 |
+
/* Steps, notes, cards β crisp border-left lines */
|
| 1537 |
+
.hb-step,
|
| 1538 |
+
.hb-note,
|
| 1539 |
+
.note,
|
| 1540 |
+
.hb-qualify,
|
| 1541 |
+
.qualify {
|
| 1542 |
+
-webkit-backface-visibility: hidden;
|
| 1543 |
+
backface-visibility: hidden;
|
| 1544 |
+
}
|
| 1545 |
+
|
| 1546 |
+
/* Gradient bars β smooth without banding */
|
| 1547 |
+
.hb-heading-1::after,
|
| 1548 |
+
.toc-heading::after,
|
| 1549 |
+
.hb-benefits-bar,
|
| 1550 |
+
.hb-banner-heading {
|
| 1551 |
+
-webkit-backface-visibility: hidden;
|
| 1552 |
+
backface-visibility: hidden;
|
| 1553 |
+
transform: translateZ(0);
|
| 1554 |
+
}
|
| 1555 |
+
|
| 1556 |
+
/* Print media β force high-res */
|
| 1557 |
+
@media print {
|
| 1558 |
+
* {
|
| 1559 |
+
-webkit-print-color-adjust: exact;
|
| 1560 |
+
print-color-adjust: exact;
|
| 1561 |
+
}
|
| 1562 |
+
img {
|
| 1563 |
+
image-rendering: auto;
|
| 1564 |
+
-webkit-backface-visibility: hidden;
|
| 1565 |
+
}
|
| 1566 |
}
|