/* =====================================================================================
   PieceDesk « Ardoise » : the website chrome and rhythm (DIRECTION.md sections 4.2, 7 and 8).
   Import order: ../../tokens.css, ../../shared/slate.css, ../shared/site.css (and ../shared/app.css
   when the page shows a software frame). Dark first; .pd-site[data-theme="light"] is the fallback.
   Roles only (--site-*); no raw colour here (S11). No blurred shadow on the site, ever.
   ===================================================================================== */

/* ---------- 00. The narrow no-break space (U+202F): see app.css section 00, the same faces ---------- */
@font-face { font-family: "PD Text"; src: local("Arial"), local("ArialMT"), local("Helvetica Neue"), local("Helvetica"), local("Liberation Sans"), local("Arimo"); font-weight: 400; font-style: normal; unicode-range: U+202F; }
@font-face { font-family: "PD Text"; src: local("Arial"), local("ArialMT"), local("Helvetica Neue"), local("Helvetica"), local("Liberation Sans"), local("Arimo"); font-weight: 500; font-style: normal; unicode-range: U+202F; }
@font-face { font-family: "PD Text"; src: local("Arial"), local("ArialMT"), local("Helvetica Neue"), local("Helvetica"), local("Liberation Sans"), local("Arimo"); font-weight: 600 700; font-style: normal; unicode-range: U+202F; }
@font-face { font-family: "PD Display"; src: local("Arial"), local("ArialMT"), local("Helvetica Neue"), local("Helvetica"), local("Liberation Sans"), local("Arimo"); font-weight: 600; font-style: normal; unicode-range: U+202F; }
@font-face { font-family: "PD Title"; src: local("Arial"), local("ArialMT"), local("Helvetica Neue"), local("Helvetica"), local("Liberation Sans"), local("Arimo"); font-weight: 600; font-style: normal; unicode-range: U+202F; }
@font-face { font-family: "PD Mono"; src: local("Arial"), local("ArialMT"), local("Helvetica Neue"), local("Helvetica"), local("Liberation Sans"), local("Arimo"); font-weight: 400; font-style: normal; unicode-range: U+202F; }

/* ---------- 0. Base ---------- */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body.pd-site { margin: 0; overflow-x: clip; }
.pd-site { font: 400 var(--pd-site-text-size)/var(--pd-site-text-lh) var(--pd-font-text); -webkit-font-smoothing: antialiased; }
.pd-site, .pd-site *, .pd-site *::before, .pd-site *::after { box-sizing: border-box; }
.pd-site :where(h1, h2, h3, h4, p, ul, ol, dl, dd, figure, blockquote) { margin: 0; }
.pd-site :where(ul, ol) { padding: 0; list-style: none; }
.pd-site :where(a) { color: inherit; text-decoration: none; }
.pd-site :where(button) { font: inherit; color: inherit; background: none; border: 0; padding: 0; margin: 0; cursor: pointer; }
.pd-site :where(img, svg) { display: block; }
.pd-site :focus { outline: none; }
.pd-site :focus-visible { outline: 2px solid var(--site-focus); outline-offset: 2px; box-shadow: 0 0 0 2px var(--site-focus-inner); }
.pd-site [hidden] { display: none !important; }
/* a software frame keeps the software's ring. Kept at the specificity of .pd-site :focus-visible (it only has to come
   after it), so app.css and shell.css rules for one component (the search field has none, the side menu its chrome
   ring, a list option its inset ring) still win inside the frames */
.pd-site :where(.pd-app) :focus-visible { outline-color: var(--app-focus); box-shadow: 0 0 0 2px var(--app-focus-inner); }
@media (max-width: 639px) { .pd-site { font-size: 17px; line-height: 26px; } }

/* ---------- 1. Layout: one container, 12 / 8 / 4 columns ---------- */
.pd-wrap { width: min(var(--pd-container), 100% - 2 * var(--pd-gutter)); margin-inline: auto; }
.pd-cols { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--pd-col-gap); }
.pd-cols > * { grid-column: 1 / -1; min-width: 0; }
@media (min-width: 1024px) {
  .c-1-4 { grid-column: 1 / span 4; } .c-1-6 { grid-column: 1 / span 6; } .c-1-8 { grid-column: 1 / span 8; } .c-1-3 { grid-column: 1 / span 3; }
  .c-5-12 { grid-column: 5 / -1; } .c-7-12 { grid-column: 7 / -1; } .c-4-12 { grid-column: 4 / -1; } .c-9-12 { grid-column: 9 / -1; }
}
@media (min-width: 640px) and (max-width: 1023px) { .pd-cols { grid-template-columns: repeat(8, minmax(0, 1fr)); } }
@media (max-width: 639px) { .pd-cols { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--pd-s-2); } }

/* sections on one ink background pad the top only (H8); the prices band pads both sides */
.pd-sec { padding-top: var(--pd-section-top); }
/* on the raised band, mist is 6.71:1 (forbidden for small text, 3.4): every secondary text there reads the raised role */
.pd-band { --site-text-2: var(--site-text-2-raised); background: var(--site-bg-raised); padding-block: var(--pd-s-12); margin-top: var(--pd-section-top); }
.pd-band + .pd-sec { padding-top: var(--pd-section-top); }
.pd-end { padding-bottom: var(--pd-section-top); }
@media (max-width: 639px) { .pd-band { padding-block: var(--pd-s-8); } }

/* ---------- 2. Type: two sizes per view (4.2) ---------- */
.pd-hero-h1 { font: 600 var(--pd-site-hero-size)/var(--pd-site-hero-lh) var(--pd-font-display); letter-spacing: var(--pd-site-hero-track); color: var(--site-text-display); }
.pd-hero-h1 > span { display: block; }
.pd-h2 { font: 600 var(--pd-site-h2-size)/var(--pd-site-h2-lh) var(--pd-font-display); letter-spacing: var(--pd-site-h2-track); color: var(--site-text-display); text-wrap: balance; }
.pd-figure { font: 600 var(--pd-site-figure-size)/var(--pd-site-figure-lh) var(--pd-font-display); letter-spacing: -0.01em; color: var(--site-text-display); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pd-figure .pd-cur { font: 400 18px/28px var(--pd-font-text); letter-spacing: 0; color: var(--site-text-2); margin-right: 8px; }
.pd-moment { font: 600 72px/72px var(--pd-font-display); letter-spacing: -0.02em; color: var(--site-text-display); font-variant-numeric: tabular-nums; }
@media (max-width: 639px) { .pd-moment { font-size: 48px; line-height: 48px; } }
.pd-text { font-size: var(--pd-site-text-size); line-height: var(--pd-site-text-lh); color: var(--site-text); text-wrap: pretty; }
.pd-lede { max-width: 60ch; color: var(--site-text); text-wrap: pretty; }
.pd-sstrong { font-weight: 600; color: var(--site-text-display); }
.pd-small { font-size: var(--pd-site-small-size); line-height: var(--pd-site-small-lh); }
.pd-caption { font-size: var(--pd-site-caption-size); line-height: var(--pd-site-caption-lh); color: var(--site-text-2); }
.pd-band .pd-caption { color: var(--site-text-2-raised); }
.pd-scode { font: 400 var(--pd-site-mono-size)/var(--pd-site-mono-lh) var(--pd-font-mono); white-space: nowrap; }   /* a code or an address never breaks at its hyphens */
.pd-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pd-sec-head { margin-bottom: var(--pd-s-6); }
.pd-sec-head > p { margin-top: var(--pd-s-2); max-width: 60ch; }
@media (max-width: 639px) { .pd-text { font-size: 17px; line-height: 26px; } .pd-sec-head { margin-bottom: var(--pd-s-4); } }

/* « à confirmer »: the one warm text on the site, with its ■ glyph */
.pd-pending { display: inline-flex; align-items: center; gap: 6px; color: var(--site-warn); white-space: nowrap; }
.pd-sstatus { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }

/* ---------- 3. Buttons and links (5.1, site column) ---------- */
.pd-sbtn {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px; height: var(--pd-control-h-site); padding: 0 22px;
  border: 1px solid transparent; border-radius: var(--pd-r-1); font: 600 var(--pd-site-btn-size)/20px var(--pd-font-text); letter-spacing: -0.005em;
  white-space: nowrap; cursor: pointer; text-decoration: none; -webkit-tap-highlight-color: transparent;
  transition: background-color var(--pd-dur-3) var(--pd-ease-out), color var(--pd-dur-3) var(--pd-ease-out), border-color var(--pd-dur-3) var(--pd-ease-out);
}
.pd-sbtn svg { width: 18px; height: 18px; flex: none; transition: transform var(--pd-dur-4) var(--pd-ease-out); }
.pd-sbtn--primary { background: var(--site-btn-bg); color: var(--site-btn-text); }
.pd-sbtn--secondary { background: transparent; border-color: var(--site-btn2-border); color: var(--site-btn2-text); }
.pd-sbtn--small { height: 44px; padding: 0 16px; font-size: 15px; gap: 8px; }
.pd-sbtn--block { display: flex; width: 100%; }
@media (hover: hover) {
  .pd-sbtn--primary:hover { background: var(--site-btn-bg-hover); }
  .pd-sbtn--secondary:hover { background: var(--site-btn2-bg-hover); }
  .pd-sbtn:hover svg.go { transform: translateX(4px); }
  .pd-sbtn:hover svg.down { transform: translateY(3px); }
}
.pd-sbtn--primary.is-hover { background: var(--site-btn-bg-hover); }
.pd-sbtn--secondary.is-hover { background: var(--site-btn2-bg-hover); }
.pd-sbtn--primary:active { background: var(--site-btn-bg-hover); }
.pd-sbtn--secondary:active { background: var(--site-btn2-bg-hover); }
.pd-sbtn:disabled, .pd-sbtn[aria-disabled="true"] { background: transparent; border-color: var(--site-control-border); color: var(--site-text-2); cursor: not-allowed; }
.pd-sbtn.is-loading { cursor: progress; }
/* quiet: a text link 17/20 600 with its arrow; the underline grows from the left (340 ms) */
.pd-slink { position: relative; display: inline-flex; align-items: center; gap: 10px; min-height: 52px; font: 600 var(--pd-site-btn-size)/20px var(--pd-font-text); color: var(--site-text-display); white-space: nowrap; }
.pd-slink > span { position: relative; }
.pd-slink > span::after { content: ""; position: absolute; left: 0; right: 0; bottom: -4px; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: left center; transition: transform 340ms var(--pd-ease-out); }
.pd-slink svg { width: 18px; height: 18px; transition: transform var(--pd-dur-4) var(--pd-ease-out); }
@media (hover: hover) { .pd-slink:hover > span::after { transform: none; } .pd-slink:hover svg.go { transform: translateX(4px); } .pd-slink:hover svg.down { transform: translateY(3px); } }
.pd-slink.is-hover > span::after { transform: none; }
.pd-tlink { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }

/* ---------- 4. Fields, segmented, select (5.2, site column) ---------- */
.pd-sfield { display: flex; flex-direction: column; gap: var(--pd-s-1); min-width: 0; }
.pd-slabel { font: 500 15px/22px var(--pd-font-text); color: var(--site-text-display); }
.pd-sinput {
  width: 100%; min-width: 0; height: var(--pd-control-h-site); padding: 0 16px; border: 1px solid var(--site-control-border); border-radius: var(--pd-r-1);
  background: var(--site-bg); color: var(--site-text-display); font: 400 17px/24px var(--pd-font-text); -webkit-appearance: none; appearance: none;
  transition: border-color var(--pd-dur-2) var(--pd-ease-out);
}
.pd-band .pd-sinput { background: var(--site-bg-raised); }
.pd-sinput::placeholder { color: var(--site-text-2); opacity: 1; }
@media (hover: hover) { .pd-sinput:hover:not(:focus) { border-color: var(--site-text-2); } }
.pd-sinput:focus { border-color: var(--site-text-display); outline: 2px solid var(--site-focus); outline-offset: 2px; box-shadow: 0 0 0 2px var(--site-focus-inner); }
.pd-sinput.is-focus { border-color: var(--site-text-display); outline: 2px solid var(--site-focus); outline-offset: 2px; box-shadow: 0 0 0 2px var(--site-focus-inner); }
.pd-sfield.is-error .pd-sinput { border: 2px solid var(--site-crit); padding: 0 15px; }
.pd-serror { display: flex; align-items: center; gap: 6px; font-size: 13px; line-height: 20px; color: var(--site-text); }
.pd-serror svg { width: 16px; height: 16px; color: var(--site-crit); }
.pd-sinline { display: flex; gap: var(--pd-s-1); align-items: flex-start; }
.pd-sinline > .pd-sinput { flex: 1; }
.pd-sinline > .pd-sbtn { flex: none; }
/* phone: the button goes under the field, both full width. flex: none, or the column flexbox squeezes the field to 0 high */
@media (max-width: 639px) { .pd-sinline { flex-direction: column; align-items: stretch; } .pd-sinline > *, .pd-sinline > .pd-sinput { flex: none; } .pd-sinline > .pd-sbtn { width: 100%; } }   /* « > .pd-sinput » too: its flex: 1 above is more specific than « > * » */
.pd-sseg { display: inline-flex; align-items: stretch; height: var(--pd-control-h-site); outline: 1px solid var(--site-control-border); outline-offset: -1px; border-radius: var(--pd-r-1); max-width: 100%; }
.pd-sseg > button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 0 20px; min-width: 52px; font: 500 15px/20px var(--pd-font-text); color: var(--site-text); white-space: nowrap; transition: background-color var(--pd-dur-3) var(--pd-ease-out), color var(--pd-dur-3) var(--pd-ease-out); }
.pd-sseg > button:first-child { border-radius: 1px 0 0 1px; }
.pd-sseg > button:last-child { border-radius: 0 1px 1px 0; }
.pd-sseg > button[aria-pressed="true"] { background: var(--site-btn-bg); color: var(--site-btn-text); font-weight: 600; }
.pd-sseg > button:focus-visible { position: relative; z-index: 1; }
@media (hover: hover) { .pd-sseg > button:not([aria-pressed="true"]):hover { background: var(--site-btn2-bg-hover); color: var(--site-text-display); } }
.pd-sseg--block { display: flex; width: 100%; }
.pd-sseg--block > button { flex: 1; padding: 0 8px; }
.pd-sseg--44 { height: 44px; }
.pd-sselect { display: flex; align-items: center; gap: 8px; width: 100%; height: var(--pd-control-h-site); padding: 0 12px 0 16px; border: 1px solid var(--site-control-border); border-radius: var(--pd-r-1); background: var(--site-bg); color: var(--site-text-display); font: 400 17px/24px var(--pd-font-text); text-align: left; }
.pd-sselect > span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pd-sselect > svg { width: 20px; height: 20px; color: var(--site-text-2); transition: transform var(--pd-dur-2) var(--pd-ease-out); }
.pd-sselect[aria-expanded="true"] { border-color: var(--site-text-display); }
.pd-sselect[aria-expanded="true"] > svg { transform: rotate(180deg); }
.pd-slist { position: fixed; z-index: var(--pd-z-popover); max-height: 320px; overflow-y: auto; padding: 4px 0; background: var(--site-bg-raised); border: 1px solid var(--site-control-border); border-radius: var(--pd-r-1); }
.pd-slist [role="option"] { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 16px; color: var(--site-text); cursor: pointer; font-size: 17px; line-height: 24px; }
.pd-slist [role="option"] svg { width: 16px; height: 16px; margin-left: auto; visibility: hidden; }
.pd-slist [aria-selected="true"] { color: var(--site-text-display); font-weight: 600; }
.pd-slist [aria-selected="true"] svg { visibility: visible; }
.pd-slist .is-active { background: var(--site-bg-hover); }
@media (max-width: 639px) { .pd-slist { left: 0 !important; right: 0; bottom: 0; top: auto !important; width: auto !important; max-height: 70svh; border-radius: 0; border-width: 1px 0 0; padding-bottom: env(safe-area-inset-bottom); } }

/* ---------- 5. Navigation (8.2 section 0) ---------- */
.pd-nav { position: sticky; top: 0; z-index: var(--pd-z-sticky); height: 72px; background: var(--site-bg); border-bottom: 1px solid transparent; transition: border-color var(--pd-dur-2) linear; }
.pd-nav.is-scrolled { border-bottom-color: var(--site-line); }
.pd-nav__in { height: 100%; display: flex; align-items: center; gap: var(--pd-s-3); }
.pd-lockup { display: inline-flex; align-items: center; height: 52px; flex: none; }
.pd-lockup img { height: 28px; width: auto; }
.pd-site[data-theme="light"] .pd-lockup .is-fog, .pd-site:not([data-theme="light"]) .pd-lockup .is-ink { display: none; }
.pd-nav__links { display: flex; align-items: center; gap: var(--pd-s-3); margin-left: auto; }
.pd-nav__links a { display: inline-flex; align-items: center; height: 52px; font: 500 var(--pd-site-small-size)/var(--pd-site-small-lh) var(--pd-font-text); color: var(--site-text); white-space: nowrap; transition: color var(--pd-dur-2) var(--pd-ease-out); }
.pd-nav__links a[aria-current="page"] { color: var(--site-text-display); text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; }
@media (hover: hover) { .pd-nav__links a:hover { color: var(--site-text-display); } }
.pd-nav__end { display: flex; align-items: center; gap: var(--pd-s-2); margin-left: var(--pd-s-1); }
.pd-lang { display: inline-flex; align-items: center; gap: 2px; font: 500 15px/22px var(--pd-font-text); color: var(--site-text-2); }
.pd-lang > a, .pd-lang > button { display: inline-grid; place-items: center; min-width: 32px; height: 52px; padding: 0 4px; color: var(--site-text); }
.pd-lang > [aria-current="true"] { color: var(--site-text-display); font-weight: 600; }
.pd-lang > [aria-disabled="true"] { color: var(--site-text-2); cursor: default; }
.pd-nav__login { display: inline-flex; align-items: center; height: 52px; font: 500 15px/22px var(--pd-font-text); color: var(--site-text); white-space: nowrap; }
@media (hover: hover) { .pd-nav__login:hover { color: var(--site-text-display); } }
.pd-nav__menu { display: none; }
@media (max-width: 1199px) {
  .pd-nav__links, .pd-nav__end .pd-lang, .pd-nav__end .pd-nav__login { display: none; }
  .pd-nav__end { margin-left: auto; }
  .pd-nav__menu { display: inline-flex; }
}
@media (max-width: 639px) {
  .pd-nav { height: 56px; }
  .pd-lockup { height: 44px; }
  .pd-lockup img { height: 24px; }
  .pd-nav__end .pd-sbtn--primary { display: none; }
}

/* the phone menu: a full-screen dialog on ink, links in PD Display 34, the call to action at the bottom */
.pd-mmenu { position: fixed; inset: 0; z-index: var(--pd-z-dialog); display: flex; flex-direction: column; background: var(--site-bg); padding: 0 var(--pd-gutter) calc(var(--pd-s-3) + env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain; animation: pd-site-fade var(--pd-dur-3) var(--pd-ease-out) both; }
.pd-mmenu.is-out { animation: pd-site-fade-out var(--pd-dur-2) var(--pd-ease-in) both; }
.pd-mmenu__head { display: flex; align-items: center; justify-content: space-between; height: 56px; flex: none; }
@media (min-width: 640px) { .pd-mmenu__head { height: 72px; } }
.pd-mmenu__close { display: inline-grid; place-items: center; width: 44px; height: 44px; margin-right: -10px; color: var(--site-text-display); border-radius: var(--pd-r-1); }
.pd-mmenu__close svg { width: 24px; height: 24px; }
.pd-mmenu__links { margin-top: var(--pd-s-4); }
.pd-mmenu__links a { display: flex; align-items: center; min-height: 56px; font: 600 34px/40px var(--pd-font-display); letter-spacing: -0.02em; color: var(--site-text-display); border-bottom: 1px solid var(--site-line); }
.pd-mmenu__links li:first-child a { border-top: 1px solid var(--site-line); }
.pd-mmenu__end { margin-top: auto; padding-top: var(--pd-s-5); display: flex; flex-direction: column; gap: var(--pd-s-2); }
.pd-mmenu__row { display: flex; align-items: center; justify-content: space-between; }
@keyframes pd-site-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes pd-site-fade-out { from { opacity: 1; } to { opacity: 0; } }
html.pd-locked, html.pd-locked body { overflow: hidden; }

/* ---------- 6. Footer (8.2 section 11) ---------- */
.pd-foot { margin-top: var(--pd-section-top); border-top: 1px solid var(--site-line); padding: var(--pd-s-6) 0 var(--pd-s-8); }
.pd-foot__in { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--pd-s-4) var(--pd-s-5); align-items: start; }
.pd-foot__id { display: flex; flex-direction: column; gap: var(--pd-s-2); }
.pd-foot__id p { font-size: var(--pd-site-small-size); line-height: var(--pd-site-small-lh); color: var(--site-text-2); }
.pd-foot__nav { display: flex; flex-wrap: wrap; align-items: center; gap: 0 var(--pd-s-3); justify-content: flex-end; }
.pd-foot__nav a { display: inline-flex; align-items: center; min-height: 44px; font-size: var(--pd-site-small-size); line-height: var(--pd-site-small-lh); color: var(--site-text); }
@media (hover: hover) { .pd-foot__nav a:hover { color: var(--site-text-display); text-decoration: underline; text-underline-offset: 4px; } }
.pd-foot .pd-lang > a, .pd-foot .pd-lang > button { height: 44px; }
/* one column under 1024: beside the links, the name and the note would be squeezed to a word per line at 768 */
@media (max-width: 1023px) { .pd-foot__in { grid-template-columns: minmax(0, 1fr); } .pd-foot__nav { justify-content: flex-start; } }

/* ---------- 7. Entrance (7.1, 7.2): pop in place, content visible by default ---------- */
.js:not(.rm) [data-pop] { transition: transform var(--pd-dur-pop) var(--pd-spring) var(--d, 0ms), opacity 200ms linear var(--d, 0ms); }
.js:not(.rm) [data-pop]:not(.in) { opacity: 0; transform: translate3d(0, 14px, 0) scale(0.965); }
@media (prefers-reduced-motion: reduce) { [data-pop] { opacity: 1 !important; transform: none !important; transition: none !important; } }
@media print { [data-pop] { opacity: 1 !important; transform: none !important; } }

/* ---------- 8. A software frame shown on the site: 1 px ring, radius 6, no shadow ---------- */
.pd-frame { border: 1px solid var(--site-frame-ring); border-radius: var(--pd-r-3); overflow: hidden; background: var(--site-bg-raised); }
.pd-frame > .pd-app { min-height: 100%; }

/* ---------- 9. Slates: legend swatches (the slate itself is shared/slate.css) ---------- */
.pd-slegend { display: flex; flex-wrap: wrap; gap: var(--pd-s-1) var(--pd-s-3); }
.pd-slegend > span { display: inline-flex; align-items: center; gap: 10px; font-size: var(--pd-site-small-size); line-height: var(--pd-site-small-lh); color: var(--site-text-2); }
.pd-slegend .pd-slate { width: 22px; height: 16px; --c: 4px; flex: none; }
.pd-slegend .pd-slate--onrequest > .pd-slate__in, .pd-slegend .pd-slate--shared > .pd-slate__in { position: absolute; inset: 1px; height: auto; padding: 0; clip-path: polygon(0 0, 100% 0, 100% calc(100% - 3.4px), calc(100% - 3.4px) 100%, 3.4px 100%, 0 calc(100% - 3.4px)); }
/* a dark slate is 1.6:1 on ink at legend size: it carries the outline colour as its edge so the swatch reads */
.pd-slegend .pd-slate--shared { --tone: var(--site-slate-outline); }
.pd-slegend .pd-slate--shared > .pd-slate__in { background: var(--site-slate-4); }

/* ---------- 10. The site's day ruler (5.16): 06:00 to 22:00, six diamonds, filled to the moment ---------- */
.pd-sruler { --h0: 6; --hs: 16; position: relative; padding-top: 28px; }
.pd-sruler__labels { position: absolute; left: 0; right: 0; top: 0; height: 20px; }
.pd-sruler__labels span { position: absolute; top: 0; left: calc((var(--h) - var(--h0)) / var(--hs) * 100%); transform: translateX(-50%); font: 400 13px/20px var(--pd-font-mono); color: var(--site-text-2); white-space: nowrap; }
.pd-sruler__labels span:first-child { transform: none; }
.pd-sruler__labels span:last-child { transform: translateX(-100%); }
@media (max-width: 639px) { .pd-sruler__labels span.is-sparse { visibility: hidden; } }   /* phone: every four hours */
.pd-sruler__track { position: relative; height: 12px; border-radius: var(--pd-r-1); background: var(--site-bg-raised); box-shadow: inset 0 0 0 1px var(--site-line); }
.pd-sruler__ticks { position: absolute; inset: 0; }
.pd-sruler__ticks i { position: absolute; top: 3px; bottom: 3px; width: 1px; left: calc((var(--h) - var(--h0)) / var(--hs) * 100%); background: var(--site-control-border); }
.pd-sruler__fill { position: absolute; left: 0; top: 0; bottom: 0; width: 100%; background: var(--site-text); border-radius: var(--pd-r-1); transform-origin: left center; transform: scaleX(calc((var(--t) - var(--h0)) / var(--hs))); transition: transform var(--pd-dur-fill) var(--pd-ease-out); }
.pd-sruler__marks { position: absolute; left: 0; right: 0; top: 28px; height: 12px; }
.pd-dia { position: absolute; top: 50%; left: calc((var(--h) - var(--h0)) / var(--hs) * 100%); width: 44px; height: 44px; margin: -22px 0 0 -22px; display: grid; place-items: center; border-radius: var(--pd-r-1); }
.pd-dia::before { content: ""; width: 12px; height: 12px; transform: rotate(45deg); background: var(--site-bg); box-shadow: inset 0 0 0 2px var(--site-text); transition: transform 400ms var(--pd-spring), background-color var(--pd-dur-3) var(--pd-ease-out); }
/* a moment already passed sits on the filled track: fog with an ink ring, so it never melts into the fill */
.pd-dia.is-past::before { background: var(--site-text); box-shadow: 0 0 0 2px var(--site-bg); }
.pd-dia[aria-current="step"]::before { background: var(--site-text-display); box-shadow: none; transform: rotate(45deg) scale(1.5); }
@media (hover: hover) { .pd-dia:not([aria-current="step"]):hover::before { background: var(--site-text-2); } }

/* the intake's ten ticks (8.2 section 10) */
.pd-ticks { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: 4px; }
.pd-ticks i { height: 6px; border-radius: var(--pd-r-1); background: var(--site-bg-raised); box-shadow: inset 0 0 0 1px var(--site-line); transform-origin: left center; }
.pd-ticks i.is-done { background: var(--site-text); box-shadow: none; }
