/* Free patterns (crosstela.com/library/patterns), built by site/tools/build_patterns.py on the Library's page shell.
   Reads only site.css tokens; swatch and symbol colours arrive as --c through library-pages.js (no inline styles). */

.pat-cards{list-style:none;margin:clamp(24px,3.4vw,36px) 0 0;padding:0;display:grid;gap:clamp(12px,1.8vw,20px);
  grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr))}
.pat-cards.is-small{margin-top:12px;grid-template-columns:repeat(auto-fill,minmax(min(46%,180px),1fr))}
.pat-card a{display:flex;flex-direction:column;height:100%;padding:10px 10px 14px;border-radius:18px;background:var(--tile);box-shadow:var(--shadow);
  color:var(--ink);text-decoration:none;transition:transform .18s var(--ease,ease)}
.pat-card a:hover{transform:translateY(-2px)}
.pat-card a:hover .pat-name{color:var(--accent)}
.pat-thumb{display:flex;align-items:center;justify-content:center;aspect-ratio:1;border-radius:12px;background:#F3EEE4;overflow:hidden}
.pat-thumb img{display:block;max-width:100%;max-height:100%;width:auto;height:auto}
.pat-name{margin:12px 4px 0;font-family:var(--display);font-weight:var(--display-w);letter-spacing:calc(var(--track) * .4);font-size:18px;line-height:1.2}
.pat-meta{margin:6px 4px 0;font-size:13.5px;color:var(--muted)}
.pat-cards.is-small .pat-name{font-size:15.5px}
.pat-cards.is-small .pat-meta{font-size:12.5px}

.pat-hero{display:grid;gap:clamp(18px,3vw,36px);margin-top:clamp(20px,3vw,32px);align-items:start}
@media (min-width:880px){.pat-hero{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}}
.pat-look{margin:0}
.pat-look img{display:block;width:100%;height:auto;border-radius:18px;box-shadow:var(--shadow)}
.pat-look figcaption{margin-top:8px;font-size:13.5px;color:var(--muted)}
.pat-facts{margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pat-facts>div{padding:10px 12px;border-radius:14px;background:var(--tile);box-shadow:var(--shadow);min-width:0}
.pat-facts dt{font-size:12.5px;font-weight:600;color:var(--muted)}
.pat-facts dd{margin:2px 0 0;font-weight:700;font-size:16.5px;color:var(--ink);overflow-wrap:anywhere}
.pat-facts dd small{display:block;font-weight:500;font-size:12.5px;color:var(--muted)}
.pat-cut{margin:14px 2px 0;font-size:14.5px;color:var(--ink-2)}
.pat-dl{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:16px;padding:15px 18px;border-radius:16px;
  background:var(--accent);color:var(--on-accent);text-decoration:none;font-weight:700;font-size:18px;text-align:center}
.pat-dl small{font-weight:500;font-size:13px;opacity:.85}
.pat-dl:hover{filter:brightness(1.08)}
.pat-oxs{margin:10px 2px 0;font-size:13.5px;color:var(--muted)}
.pat-oxs a{color:inherit}

.pat-app{margin-top:clamp(28px,4vw,44px);padding:clamp(18px,3vw,28px);border-radius:20px;background:var(--tile);box-shadow:var(--shadow)}
.pat-app h2{margin:0;font-family:var(--display);font-weight:var(--display-w);letter-spacing:calc(var(--track) * .55);font-size:clamp(21px,2.5vw,26px);line-height:1.2;color:var(--ink)}
.pat-app p{margin:10px 0 16px;max-width:62ch;color:var(--ink)}
.pat-store{display:inline-block}
.pat-store img{display:block;height:50px;width:auto}

.tbl.pat-key td{vertical-align:middle}
.tbl.pat-key .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl.pat-key td b{font-weight:700}
.pat-sym{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:var(--c,transparent);
  color:#111;font-family:'Apple Symbols','Segoe UI Symbol','Noto Sans Symbols 2','DejaVu Sans',sans-serif;font-size:17px;line-height:1;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.pat-sym[data-ink="l"]{color:#fff}
.pat-lic{margin-top:1.4em;font-size:14px;color:var(--muted)}
/* The key stays a table on a phone: a row is one thread to find at a glance (symbol, number, count). */
@media (max-width:640px){
  .tbl.pat-key{font-size:14px}
  .tbl.pat-key thead{position:static;width:auto;height:auto;overflow:visible;clip:auto;display:table-header-group}
  .tbl.pat-key table{display:table}
  .tbl.pat-key tbody{display:table-row-group}
  .tbl.pat-key tr{display:table-row;padding:0}
  .tbl.pat-key td{display:table-cell;padding:8px 6px 8px 0;border-bottom:1px solid var(--rule)}
  .tbl.pat-key td+td{margin:0}
  .tbl.pat-key th{padding-right:6px;font-size:10px;letter-spacing:.02em}
  .tbl.pat-key th:last-child,.tbl.pat-key td:last-child{padding-right:0}
  .pat-sym{width:24px;height:24px;font-size:15px}
  .tbl.pat-key .sw{display:none}
}
.pat-chart{max-width:560px;margin:28px auto 0}
.pat-chart img{border-radius:10px}
.pat-bs{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:4px}
.pat-bs .sw{display:inline-block;width:20px;height:6px;border-radius:3px;vertical-align:middle;margin-right:6px}
