/* The catalogue on paper (CT2; DS2-5, docs/specs/ds2-5-the-small-pages.md): this page's own layout. A search and a
   mono row of tags held at the top, pictures in plain frames at their own shapes, and a prompt's view as the page's
   one dialog. The tokens, the top line, the footer, a page's head and the controls' parts are design/paper.css's. */
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
p,li,dd{text-wrap:pretty}

.xbar{position:sticky;top:0;z-index:20;background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.xbar-in{display:flex;align-items:center;gap:clamp(16px,2.4vw,32px);min-width:0;padding-block:10px}
.search{position:relative;flex:0 0 min(320px,38%)}
.search .field{min-height:40px;padding-inline:38px 42px}
.search .field::-webkit-search-cancel-button{display:none}
.search svg{position:absolute;left:12px;top:50%;translate:0 -50%;color:var(--ink-3)}
.search .kbd{position:absolute;right:10px;top:50%;translate:0 -50%}
.xtags{flex:1;min-width:0;gap:20px;border-bottom:0;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent)}
.xtags::-webkit-scrollbar{display:none}
.xtags button{margin-bottom:0;padding-block:13px 12px}
.xtags button:last-child{margin-right:32px}

.xres{padding-block:20px clamp(48px,6vw,88px)}
.xcount{color:var(--ink-3)}
/* The script lays the cards out in columns for the width, each card in the shortest column so far. */
.xgrid{display:flex;align-items:flex-start;gap:16px;margin-top:16px}
.xcol{flex:1 1 0;min-width:0}
.xcard{display:block;margin-bottom:24px;text-decoration:none}
.xcard .frame{display:block}
.xcard .frame img{width:100%;height:auto}
.xcard .t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:9px;font-size:14.5px;font-weight:500;line-height:1.3;letter-spacing:-.01em}
.xcard .g{display:block;margin-top:3px;overflow:hidden;font:400 11.5px/1.4 var(--mono);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis}
.xcard:hover .t{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.xcard:focus-visible{outline:none}
.xcard:focus-visible .frame{outline:2px solid var(--acc-ink);outline-offset:3px}
.xnone{display:grid;gap:14px;justify-items:start;padding-block:28px;color:var(--ink-2)}
.xnone[hidden]{display:none}
.credit{padding-block:22px 26px;background:linear-gradient(var(--line),var(--line)) no-repeat var(--gut) 0 / calc(100% - 2 * var(--gut)) 1px}
.credit p{max-width:64em}

/* A template's view: the dialog, the picture beside its blanks. It is the browser's own dialog, over a scrim. */
.xview{width:min(1180px,calc(100% - 32px));max-width:none;height:min(800px,calc(100dvh - 32px));max-height:none;padding:0;overflow:hidden;color:var(--ink)}
.xview[open]{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,1fr)}
.xview::backdrop{background:rgba(20,20,18,.38)}
.xv-pic{position:relative;display:grid;place-items:center;min-height:0;margin:0;padding:20px;border-right:1px solid var(--line)}
.xv-pic img{width:auto;height:auto;max-width:100%;max-height:100%;border-radius:var(--r)}
.xv-steps{position:absolute;right:16px;bottom:16px;display:flex;gap:6px}
.xv-steps .btn{width:36px;min-height:36px;padding:0 0 2px;background:var(--paper);font:400 18px/1 var(--ui)}
.xv-steps .btn:hover{background:var(--ink)}
.xv-side{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0}
.xv-scroll{display:grid;gap:20px;align-content:start;min-height:0;overflow-y:auto;padding:22px 24px 22px}
.xv-head{display:flex;align-items:flex-start;gap:12px}
.xv-head h2{flex:1;font-size:28px;font-weight:400;letter-spacing:-.04em;line-height:1.1}
.xv-head h2:focus{outline:none}
.xv-close{appearance:none;border:0;background:none;cursor:pointer;flex:none;display:grid;place-items:center;width:36px;height:36px;margin:-5px -8px 0 0;padding:0 0 3px;border-radius:var(--r-sm);font:300 26px/1 var(--ui);color:var(--ink-2)}
.xv-close:hover{background:var(--paper-2);color:var(--ink)}
.xv-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:-8px}
.xv-note{font-size:14.5px;line-height:1.5;color:var(--ink-2)}
.xv-k{font:400 12.5px/1 var(--mono);color:var(--ink-3)}
.xv-fields{display:grid;gap:12px}
.xv-fields .label{margin-bottom:5px;color:var(--ink-2)}
.xv-fields .field,.xv-fields .select{min-height:40px;font-size:14.5px}
.xv-prompt{display:grid;gap:10px}
.xv-text{padding-block:12px 14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:400 12.5px/1.65 var(--mono);color:var(--ink-2);overflow-wrap:anywhere}
.xv-text mark{padding:1px 3px;border-radius:3px;background:var(--paper-2);color:var(--ink);box-shadow:inset 0 -1px 0 var(--ink)}
.xv-bar{display:grid;gap:10px;padding:14px 24px 18px;border-top:1px solid var(--line);background:var(--paper)}
.xv-acts{display:flex;flex-wrap:wrap;gap:10px}
.xv-acts .btn{flex:1 1 140px;min-height:44px}
.xv-how{font-size:13px;line-height:1.45;color:var(--ink-3)}

@media (max-width:900px){
  .xbar-in{flex-direction:column;align-items:stretch;gap:0;padding-block:10px 0}
  .search{flex:none}
  .search .field{min-height:44px;font-size:16px}   /* a phone doesn't zoom on the search */
  .search .kbd{display:none}
  .xtags{margin-right:calc(-1 * var(--gut))}
  .xgrid{gap:10px}
  .xview{width:100%;height:100dvh;margin:0;border:0;border-radius:0}
  .xview[open]{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);overflow-y:auto}
  .xv-pic{max-height:46dvh;padding:12px;border-right:0;border-bottom:1px solid var(--line)}
  .xv-pic img{max-height:calc(46dvh - 24px)}
  .xv-side{display:block}
  .xv-scroll{overflow:visible;padding:18px 16px 20px}
  .xv-fields .field,.xv-fields .select{min-height:44px;font-size:16px}
  .xv-close{width:44px;height:44px;margin:-9px -12px 0 0}
  .xv-steps .btn{width:44px;min-height:44px}
  .xv-bar{position:sticky;bottom:0;padding:12px 16px calc(14px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:560px){
  .xcard{margin-bottom:18px}
  .xcard .t{font-size:13.5px}
  .xcard .g{display:none}
}
