/* ==================================================================
   ZIP-Codes.com  TOS DOCUMENT  v5.1
   Loaded only by the terms-of-service wrapper pages in the site root.

   WHY THIS IS A SEPARATE FILE AND NOT PART OF product-system.v5.css
   Every product page loads product-system.v5.css, and none of them
   needs a word of this. Keeping it out also means TOS typography can
   be tuned without bumping the shared stylesheet's cache key across
   the whole site.

   WHY IT IS SCOPED TO .tos-doc AND NOT TO THE PARTIAL'S OWN MARKUP
   The documents in content/tos/ are INCLUDES, shared between these
   pages and the purchase modals - one edit to a partial has to keep
   working in both places. So nothing here may assume it is on a page:
   .tos-doc is added by the WRAPPER only. The modals never carry it,
   so they are untouched by everything below even though they render
   the same HTML inside a .zcp5 body.

   Which also means: DO NOT restyle these documents from
   product-system.v5.css or from any page-level rule that could reach
   a modal. That is the one way to break the shared-include contract.
   ================================================================== */

/* The partials all open with <div style="padding:10px;">. Harmless, and
   not ours to remove - it lives in the shared include. */

/* ONE COLUMN, NOT TWO WIDTHS.

   The first cut of this file capped .tos-doc p/li at 74ch for a readable
   measure but left the CARD at full container width. On a wide screen the
   white panel ran the full 1320px while the text stopped around 600px,
   leaving a dead gutter down the right-hand side. That does not read as a
   considered measure - it reads as broken layout, and it was.

   The measure belongs to the COLUMN. .tos-col carries it, the card fills
   the column, and the text fills the card, so there is only ever one
   width on the page and everything in the document lines up with
   everything else. Sized in ch so it tracks the font size rather than
   drifting if the type scale is ever changed.

   All 41 tables in the grandfathered ZIP+4 document are two columns of
   prose - they want the same measure as the paragraphs, not more room. */
.zcp5 .tos-col{ max-width:calc(80ch + 4rem); margin-left:auto; margin-right:auto; }

.zcp5 .tos-doc{
  background:#fff;
  border:1px solid var(--zcp-line);
  border-radius:10px;
  padding:1.75rem 2rem;
  color:#374151;
  font-size:.875rem;
  line-height:1.75;
}
.zcp5 .tos-doc p{ margin:0 0 .9rem; }

/* One heading scale for documents that were written years apart: some
   use h2/h3, some h4, most use <p><strong> and nothing else. */
.zcp5 .tos-doc h2,
.zcp5 .tos-doc h3,
.zcp5 .tos-doc h4{
  color:var(--zcp-ink); font-weight:700; line-height:1.3;
  margin:1.9rem 0 .7rem; letter-spacing:-.01em;
}
.zcp5 .tos-doc h2{ font-size:1.06rem; }
.zcp5 .tos-doc h3{ font-size:.98rem; }
.zcp5 .tos-doc h4{ font-size:.92rem; }
.zcp5 .tos-doc > :first-child,
.zcp5 .tos-doc div[style] > :first-child{ margin-top:0; }

.zcp5 .tos-doc ul,
.zcp5 .tos-doc ol{ margin:0 0 1rem; padding-left:1.4rem; }
.zcp5 .tos-doc li{ margin-bottom:.4rem; }

.zcp5 .tos-doc a{ color:#3b82f6; word-break:break-word; }

/* "Effective Date: 11/06/2025" - tos_database.asp emits this div. It is
   the first thing a reader checks on a legal page, so it reads as a
   stamp rather than as another line of body copy. */
.zcp5 .tos-doc .effective-date{
  display:inline-block; margin:0 0 1.1rem;
  padding:.28rem .7rem; border-radius:999px;
  background:#eff6ff; border:1px solid #dbeafe; color:#1d4ed8;
  font-size:.76rem; font-weight:600;
  font-variant-numeric:tabular-nums;
}

/* tos_zip4_deluxe_grandfathered.asp carries 41 bare <table> elements. */
.zcp5 .tos-doc table{
  width:100%; border-collapse:collapse;
  margin:0 0 1.15rem; font-size:.8rem;
}
.zcp5 .tos-doc th,
.zcp5 .tos-doc td{
  border:1px solid var(--zcp-line);
  padding:.4rem .6rem; text-align:left; vertical-align:top;
}
.zcp5 .tos-doc th{ background:#f8fafc; font-weight:600; color:var(--zcp-ink); }
/* Below tablet a fixed table will push the page sideways, and the page
   body must never scroll horizontally - so the TABLE scrolls instead. */
@media (max-width:767.98px){
  .zcp5 .tos-doc table{ display:block; width:100%; overflow-x:auto; }
  .zcp5 .tos-doc{ padding:1.25rem 1.1rem; }
}

/* ------------------------------------------------------------------
   OTHER TERMS - the sibling rail at the foot of every TOS page.
   These documents are a family and were previously unreachable from
   one another: a customer who landed on the Boundary terms had no way
   to find the Redistributable terms except by going back to the site
   map. Grandfathered documents are deliberately NOT listed - they are
   reachable only from the current document they superseded.
   ------------------------------------------------------------------ */
.zcp5 .tos-more{ margin-top:1.6rem; }   /* sits inside .tos-col */
.zcp5 .tos-more h2{
  font-size:.7rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--zcp-mut); font-weight:600; margin:0 0 .7rem;
}
.zcp5 .tos-more ul{
  list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
  gap:.4rem .9rem;
}
.zcp5 .tos-more a{
  display:block; padding:.4rem .6rem; border-radius:6px;
  font-size:.82rem; color:#374151; text-decoration:none;
  border:1px solid transparent;
}
.zcp5 .tos-more a:hover{ background:#fff; border-color:var(--zcp-line); color:#1d4ed8; }
.zcp5 .tos-more a[aria-current="page"]{
  background:#fff; border-color:var(--zcp-line);
  color:var(--zcp-ink); font-weight:700;
}
