/* Shout Report blog. Loads after site.css and only adds the blog's own pieces.
   Mobile first, so the base rules are the phone layout and the media queries widen it. */

/* ---------- blog index ---------- */
.blog-page{padding-block:clamp(40px,7vw,96px) var(--sec-pad)}
/* phones: the sticker floats in the corner so the heading and intro keep the full width */
.blog-head::after{content:"";display:block;clear:both}
.blog-head h1{font-size:clamp(40px,6.4vw,84px);text-wrap:balance}
.blog-head .lede{max-width:40em}
.blog-head-st{float:right;width:64px;height:auto;margin:-4px 0 8px 16px;rotate:8deg;filter:var(--st-shadow)}

.post-list{display:grid;gap:var(--gap);margin-top:clamp(32px,5vw,56px);max-width:880px}
.post-card{position:relative;display:flex;flex-direction:column;gap:10px}
.post-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-weight:700;font-size:13px;line-height:1.3;
  letter-spacing:.12em;text-transform:uppercase;color:var(--red-deep)}
.post-card-meta time{color:var(--ink)}
.post-card-meta span::after{content:"";display:inline-block;width:6px;height:6px;margin-left:10px;border-radius:50%;
  background:var(--red-btn);vertical-align:middle}
.post-card h2{font-size:clamp(26px,3.2vw,38px);line-height:1.08;text-wrap:balance}
.post-card h2 a{text-decoration:none;color:var(--ink)}
/* the title link covers the whole card, so the card is one tap target with one link in the tab order */
.post-card h2 a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.post-card h2 a:focus-visible{outline:none;box-shadow:none}
.post-card:focus-within{outline:3px solid var(--ink);outline-offset:4px;box-shadow:0 6px 0 var(--ink),var(--halo)}
.post-card p{max-width:60ch}
.post-card-more{font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.2em;
  text-decoration-color:var(--red-btn);margin-top:4px}
.blog-feed{margin-top:clamp(24px,3vw,36px)}

/* ---------- one post ---------- */
.post{padding-block:clamp(24px,5vw,64px) var(--sec-pad)}
/* about 68 characters a line at body size */
.post-wrap{width:min(100% - 2 * var(--gutter),720px)}
.post-back .tlink{font-size:16px}
.post-head{margin-top:clamp(8px,2vw,20px);padding-bottom:24px;border-bottom:2px solid var(--line)}
.post-head h1{font-size:clamp(36px,5.4vw,62px);line-height:1.02;text-wrap:balance}
.post-dek{font-size:clamp(19px,1.9vw,22px);line-height:1.45;font-weight:500;margin-top:16px}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:18px;font-size:15px;font-weight:600}
.post-meta .dot{width:5px;height:5px;border-radius:50%;background:var(--red-btn)}

.post-body{margin-top:28px;line-height:1.7}
.post-body p + p{margin-top:1em}
.post-body .lede{font-size:clamp(19px,1.9vw,21px);line-height:1.6;margin-top:0}
.post-body h2{font-size:clamp(28px,3.6vw,38px);line-height:1.08;margin:1.5em 0 .45em;text-wrap:balance}
.post-body a{text-decoration-color:var(--red-btn);overflow-wrap:anywhere}
.post-body a:hover{color:var(--ink-2);text-decoration-color:var(--ink-2)}
.post-body strong{font-weight:700}
.post-body .callout{max-width:none;margin-block:1.4em;padding:16px 20px;background:var(--paper);border:2px solid var(--ink);
  border-radius:16px;box-shadow:0 4px 0 var(--ink)}
.post-body .callout + p{margin-top:0}
.post-body .callout strong{color:var(--red-deep)}

.post-contact{position:relative;margin-top:clamp(40px,6vw,64px)}
.post-contact h2{font-size:clamp(26px,3vw,34px);line-height:1.08;padding-right:56px}
.post-contact p{margin:10px 0 22px}
.post-contact .btn{width:100%}
.post-contact-st{position:absolute;top:-26px;right:-12px;width:clamp(64px,9vw,92px);height:auto;rotate:10deg;
  filter:var(--st-shadow);pointer-events:none}
.post-back-end{margin-top:28px}

/* ---------- stickers ----------
   Each post names its stickers in its own file and the build adds the images, see tools/blog/README.md */
/* phones: the sticker sits beside the back link and eyebrow so the headline keeps the full width */
.post-head{position:relative}
.post-head-st{position:absolute;top:-46px;right:-4px;width:88px;height:auto;rotate:6deg;filter:var(--st-shadow)}
.post-head-st + .eyebrow{padding-right:100px}

/* same pattern as the FAQ page headings */
.post-body h2.has-st{display:flex;align-items:center;gap:14px}
.post-body .body-st{flex:none;width:clamp(48px,5vw,60px);height:auto;rotate:var(--r,-4deg);filter:var(--st-shadow)}
/* the watch-out sticker hangs off the box's top corner, like the one on the contact box.
   It floats, so only the first line of text steps around it */
.post-body .callout .body-st{float:right;width:clamp(60px,7vw,76px);margin:-38px -30px 0 10px;pointer-events:none}

.post-card-st{position:absolute;top:-24px;right:-10px;width:clamp(84px,10vw,124px);height:auto;rotate:-6deg;
  filter:var(--st-shadow);pointer-events:none}
.post-card-st + .post-card-meta{padding-right:clamp(72px,9vw,112px)}

/* ---------- post-by stamps ----------
   A rubber-stamp date under a section heading, so the deadline is the first thing a skimmer sees */
.post-body .stamp{display:inline-flex;flex-direction:column;align-items:center;margin:.15em 0 1em 4px;padding:6px 14px 7px;
  border:3px solid var(--red-deep);border-radius:8px;outline:1.5px solid var(--red-deep);outline-offset:3px;
  color:var(--red-deep);font-family:"Lilita One","DM Sans",sans-serif;font-size:20px;line-height:1;letter-spacing:.03em;
  text-transform:uppercase;rotate:-4deg;transform-origin:left center}
.post-body .stamp span{font-family:"DM Sans",system-ui,sans-serif;font-weight:800;font-size:11px;letter-spacing:.18em;
  margin-bottom:4px}
.post-body .stamp + p{margin-top:0}

/* ---------- photos ----------
   Real Dallas photos, taped in like prints. Each caption carries the photo's credit and license */
.post-body .snap{position:relative;max-width:640px;margin:2.2em auto 2em;padding:10px 10px 12px;background:var(--paper);
  box-shadow:0 1px 2px rgba(9,49,97,.1),0 10px 24px rgba(9,49,97,.12);rotate:var(--r,-1.2deg)}
/* the strip of tape across the top */
.post-body .snap::before{content:"";position:absolute;top:-13px;left:50%;width:min(34%,140px);height:26px;
  translate:-50% 0;rotate:-2.5deg;background:rgba(238,226,192,.85);box-shadow:0 1px 2px rgba(9,49,97,.08)}
.post-body .snap img{width:100%;height:auto;background:var(--line)}
.post-body .snap figcaption{margin-top:10px;padding-inline:2px;font-size:15px;line-height:1.45}
.post-body .snap figcaption small{display:block;margin-top:3px;font-size:12px;line-height:1.4;color:#4A5D78}
.post-body .snap + p{margin-top:0}

/* ---------- sample posts ----------
   A post idea drawn as the post itself, so a reader sees what to make */
.post-body .mock{max-width:420px;margin:1.3em 0 1.8em;padding:14px 18px 16px;background:var(--paper);
  border:2px solid var(--ink);border-radius:22px;box-shadow:0 4px 0 var(--ink)}
.post-body .mock-label{margin-bottom:10px;font-size:12px;font-weight:800;line-height:1.2;letter-spacing:.14em;
  text-transform:uppercase;color:var(--red-deep)}
.post-body .mock-head{display:flex;align-items:center;gap:10px;font-size:14px;line-height:1.3}
.post-body .mock-head::before{content:"";flex:none;width:38px;height:38px;border:2px solid var(--ink);border-radius:50%;
  background:var(--cream) url(/assets/stickers/st-7.webp) center/118% no-repeat}
.post-body .mock-head b{display:block;font-weight:700}
.post-body .mock-caption{margin-top:10px;font-size:16px;line-height:1.5}
.post-body .mock-tags{margin-top:6px;font-size:15px;font-weight:600;color:var(--ink-2)}
.post-body .mock + p{margin-top:0}
/* a sticker can hang off a sample post's top corner, like the one on the watch-out */
.post-body .mock.has-st{position:relative}
.post-body .mock .body-st{position:absolute;top:-30px;right:-10px;width:clamp(60px,7vw,76px);pointer-events:none}
/* credit lines for borrowed art, small and last */
.post-body .post-credit{margin-top:2.4em;font-size:12px;line-height:1.5;color:#4A5D78}
/* two businesses, one date: the cards sit side by side once there's room */
.post-body .mock-pair{display:grid;gap:16px;margin:1.3em 0 1.8em}
.post-body .mock-pair .mock{margin:0}
.post-body .mock-pair + p{margin-top:0}

@media (min-width:560px){
  .post-contact .btn{width:auto}
  .post-body .mock .body-st{right:-26px}
}
@media (min-width:640px){
  .post-body .mock-pair{grid-template-columns:1fr 1fr}
}
@media (min-width:768px){
  .blog-head{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:32px;align-items:start}
  .blog-head::after{content:none}
  .blog-head > *{grid-column:1}
  .blog-head .blog-head-st{grid-column:2;grid-row:1 / span 3;float:none;width:clamp(96px,10vw,140px);margin:24px 0 0}
  /* wider screens float it beside the headline; flow-root keeps it above the header's bottom rule */
  .post-head{display:flow-root}
  .post-head-st{position:static;float:right;width:clamp(120px,15vw,144px);margin:0 0 10px 18px}
  .post-head-st + .eyebrow{padding-right:0}
  .post-contact{padding:32px 36px}
  .post-contact h2{padding-right:72px}
}
