mirror of
https://github.com/xroche/httrack.git
synced 2026-08-14 03:32:24 +03:00
Signed-off-by: Xavier Roche <xroche@gmail.com> Signed-off-by: Xavier Roche <roche@httrack.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
350 lines
7.4 KiB
CSS
350 lines
7.4 KiB
CSS
/* Shared chrome for the HTTrack documentation pages. Page-specific rules live
|
|
beside the page (guide.css). Read from disk as often as over http, so
|
|
everything here has to work from a file:// URL. */
|
|
|
|
:root {
|
|
--field: #77b;
|
|
--panel: #ccd;
|
|
--accent: #99c;
|
|
--ink: #111;
|
|
--ink-soft: #444;
|
|
--rule: #aab;
|
|
--link: #00c;
|
|
--link-hover: #c00;
|
|
--code-bg: #e8e8f2;
|
|
--chip: #dde;
|
|
--shadow: rgba(0, 0, 0, .25);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--field: #171a2b;
|
|
--panel: #22263a;
|
|
--accent: #3b4066;
|
|
--ink: #e6e6ee;
|
|
--ink-soft: #a9adc4;
|
|
--rule: #3b4066;
|
|
--link: #9db4ff;
|
|
--link-hover: #ff9d9d;
|
|
--code-bg: #14172a;
|
|
--chip: #2e3350;
|
|
--shadow: rgba(0, 0, 0, .6);
|
|
}
|
|
}
|
|
|
|
* { box-sizing: border-box; }
|
|
|
|
/* The plain declaration before each var() is what IE11 gets: it drops the
|
|
custom-property line it cannot parse and keeps the literal above it. */
|
|
body {
|
|
margin: 0;
|
|
padding: 0 1rem 3rem;
|
|
background: #77b;
|
|
background: var(--field);
|
|
color: #111;
|
|
color: var(--ink);
|
|
font: 1em/1.6 "Trebuchet MS", Verdana, system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
}
|
|
|
|
/* ---- page frame ---- */
|
|
|
|
.masthead, .wrap {
|
|
max-width: 68rem;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.masthead {
|
|
padding: .6rem 0 0;
|
|
}
|
|
|
|
/* Take back the whitespace the SVG carries around the letters, restoring the old bitmap's spacing. */
|
|
.masthead img {
|
|
display: block;
|
|
max-width: 100%;
|
|
height: auto;
|
|
margin: -1.7px 0 -1.1px;
|
|
}
|
|
|
|
.masthead .tagline {
|
|
background: #000;
|
|
color: #fff;
|
|
font-weight: bold;
|
|
/* A one-line label has no use for the body's prose leading. */
|
|
line-height: 1;
|
|
padding: .3rem .4rem;
|
|
margin-top: .4rem;
|
|
}
|
|
|
|
.wrap {
|
|
background: #ccd;
|
|
background: var(--panel);
|
|
border-bottom: 6px solid #000;
|
|
padding: 1.5rem;
|
|
/* The rings the 2007 pages carried. Transparent, so it rides on --panel. */
|
|
background-image: url(images/bg_rings.svg);
|
|
background-repeat: no-repeat;
|
|
background-position: top right;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
/* Rings dropped, not inverted: their lavender is a light-panel tone. */
|
|
.wrap { background-image: none; }
|
|
|
|
/* The wordmark is black on transparent, and all but vanishes on the dark field. */
|
|
.masthead img { filter: invert(1); }
|
|
}
|
|
|
|
@media (min-width: 62rem) {
|
|
.wrap {
|
|
display: grid;
|
|
grid-template-columns: 14rem minmax(0, 1fr);
|
|
gap: 2.5rem;
|
|
align-items: start;
|
|
}
|
|
|
|
/* The hub is its own navigation, so it spans the full width. */
|
|
.wrap.solo { display: block; }
|
|
}
|
|
|
|
footer {
|
|
max-width: 68rem;
|
|
margin: .5rem auto 0;
|
|
color: #eef;
|
|
font-size: .8em;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
footer { color: var(--ink-soft); }
|
|
}
|
|
|
|
/* ---- typography ---- */
|
|
|
|
h2, h3 { scroll-margin-top: 1rem; }
|
|
|
|
h1 { font-size: 1.9em; margin: 0 0 .3em; line-height: 1.2; }
|
|
h2 { font-size: 1.45em; margin: 2.5em 0 .5em; padding-bottom: .2em; border-bottom: 2px solid var(--rule); }
|
|
h3 { font-size: 1.15em; margin: 2em 0 .4em; }
|
|
h2:first-child, h1 + h2 { margin-top: 1em; }
|
|
|
|
p { margin: 0 0 1em; }
|
|
|
|
a { color: #00c; color: var(--link); }
|
|
a:hover { color: #c00; color: var(--link-hover); }
|
|
|
|
code, kbd, pre {
|
|
font-family: ui-monospace, "Cascadia Mono", Consolas, "DejaVu Sans Mono", monospace;
|
|
font-size: .9em;
|
|
}
|
|
|
|
code, kbd { background: var(--code-bg); padding: .1em .35em; border-radius: 3px; }
|
|
|
|
/* Legacy pages carry wide code samples: scroll them, never the page. */
|
|
pre {
|
|
overflow-x: auto;
|
|
max-width: 100%;
|
|
padding: .7rem;
|
|
background: var(--code-bg);
|
|
border-left: 3px solid var(--accent);
|
|
}
|
|
|
|
.lede { font-size: 1.08em; color: var(--ink-soft); }
|
|
|
|
hr { height: 1px; border: 0; background: var(--rule); margin: 2em 0; }
|
|
|
|
img { max-width: 100%; height: auto; }
|
|
|
|
/* Legacy prose carries bare URLs long enough to push a phone sideways. */
|
|
body { overflow-wrap: break-word; }
|
|
|
|
/* The reference pages carry tables wider than any column: scroll the table, not
|
|
the page. The guide's own MIME table is narrow and reads better left alone. */
|
|
main table:not(.mime) { display: block; overflow-x: auto; }
|
|
|
|
/* ---- table of contents ---- */
|
|
|
|
.toc { font-size: .92em; }
|
|
|
|
@media (min-width: 62rem) {
|
|
.toc { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; }
|
|
}
|
|
|
|
.toc h2 {
|
|
font-size: .8em;
|
|
text-transform: uppercase;
|
|
letter-spacing: .08em;
|
|
margin: 0 0 .5em;
|
|
border: 0;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
.toc ol, .toc ul { list-style: none; margin: 0 0 1.5em; padding: 0; }
|
|
.toc li { margin: 0; }
|
|
|
|
.toc a {
|
|
display: block;
|
|
padding: .2rem .5rem;
|
|
text-decoration: none;
|
|
border-left: 3px solid transparent;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.toc a:hover { background: var(--accent); }
|
|
.toc a[aria-current="true"] { border-left-color: var(--link); font-weight: bold; }
|
|
.toc .here { font-weight: bold; }
|
|
|
|
/* ---- callouts ---- */
|
|
|
|
.note {
|
|
margin: 0 0 1em;
|
|
padding: .7rem 1rem;
|
|
border-left: 4px solid var(--accent);
|
|
background: var(--chip);
|
|
font-size: .95em;
|
|
}
|
|
|
|
.note > :last-child { margin-bottom: 0; }
|
|
|
|
/* ---- the hub ---- */
|
|
|
|
.hub {
|
|
display: grid;
|
|
gap: 1.5rem;
|
|
margin: 2rem 0 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
@media (min-width: 46rem) {
|
|
.hub { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
}
|
|
|
|
.hub > li {
|
|
padding: 1.2rem;
|
|
background: var(--chip);
|
|
border-radius: .5rem;
|
|
}
|
|
|
|
.hub h2 {
|
|
margin: 0 0 .8em;
|
|
font-size: 1.1em;
|
|
text-transform: uppercase;
|
|
letter-spacing: .06em;
|
|
border: 0;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
.hub dl { margin: 0; }
|
|
.hub dt { margin: 0 0 .1em; font-weight: bold; }
|
|
.hub dd { margin: 0 0 1em; font-size: .93em; color: var(--ink-soft); }
|
|
.hub dd:last-child { margin-bottom: 0; }
|
|
|
|
/* Option names in the glosses are short; without this a browser breaks
|
|
"--changes" after its hyphens. */
|
|
.hub code { white-space: nowrap; }
|
|
|
|
.dated { font-weight: normal; font-size: .85em; color: var(--ink-soft); }
|
|
|
|
/* ---- content tables ---- */
|
|
|
|
/* The reference pages use bare <table> for their content tables. The guide's MIME
|
|
table is styled beside the guide and opts out. */
|
|
main table:not(.mime) {
|
|
border-collapse: collapse;
|
|
margin: 0 0 1em;
|
|
font-size: .92em;
|
|
}
|
|
|
|
main table:not(.mime) td, main table:not(.mime) th {
|
|
border: 1px solid var(--rule);
|
|
padding: .3em .6em;
|
|
text-align: left;
|
|
vertical-align: top;
|
|
}
|
|
|
|
main table:not(.mime) th, main table:not(.mime) tr.head td {
|
|
background: var(--accent);
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* ---- screenshots ---- */
|
|
|
|
figure {
|
|
margin: 0 0 1.5em;
|
|
text-align: center;
|
|
}
|
|
|
|
figure img {
|
|
border: 1px solid var(--rule);
|
|
background: #fff;
|
|
box-shadow: 0 2px 8px var(--shadow);
|
|
cursor: zoom-in;
|
|
}
|
|
|
|
figcaption {
|
|
margin-top: .5em;
|
|
font-size: .88em;
|
|
color: var(--ink-soft);
|
|
}
|
|
|
|
/* Zoom overlay. Closed <dialog> is hidden by the UA, so nothing shows without JS. */
|
|
dialog#zoom {
|
|
max-width: 96vw;
|
|
max-height: 96vh;
|
|
padding: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
}
|
|
|
|
dialog#zoom img {
|
|
display: block;
|
|
max-width: 96vw;
|
|
max-height: 96vh;
|
|
width: auto;
|
|
height: auto;
|
|
cursor: zoom-out;
|
|
}
|
|
|
|
dialog#zoom::backdrop { background: rgba(0, 0, 0, .8); }
|
|
|
|
/* ---- filter box (guide options, and the FAQ) ---- */
|
|
|
|
.filter {
|
|
display: flex;
|
|
gap: .5rem;
|
|
align-items: center;
|
|
margin: 0 0 1.5rem;
|
|
}
|
|
|
|
.filter input {
|
|
flex: 1 1 auto;
|
|
padding: .5rem .7rem;
|
|
border: 1px solid var(--rule);
|
|
border-radius: .3rem;
|
|
background: var(--panel);
|
|
color: var(--ink);
|
|
font: inherit;
|
|
}
|
|
|
|
.filter output { font-size: .88em; color: var(--ink-soft); white-space: nowrap; }
|
|
|
|
/* ---- misc ---- */
|
|
|
|
.skip {
|
|
position: absolute;
|
|
left: -9999px;
|
|
}
|
|
|
|
.skip:focus {
|
|
left: 1rem;
|
|
top: 1rem;
|
|
background: var(--panel);
|
|
padding: .5rem;
|
|
z-index: 10;
|
|
}
|
|
|
|
@media print {
|
|
body { background: #fff; }
|
|
.toc, .filter { display: none; }
|
|
.wrap { display: block; border: 0; }
|
|
}
|