/* ==========================================================================
   Tahoorestan — the about / contact pages
   --------------------------------------------------------------------------
   A page-family layer, loaded only by /about/ and /contact/, the same way
   assets/css/fx.css is a layer rather than a section of styles.css.  Two
   reasons it lives here instead of at the end of styles.css: styles.css is
   126KB that every page already pays for, and these two pages arrived while
   the guide/policy family was being written into that same file.

   No new vocabulary.  Colours, radii, shadows and the hover language are the
   tokens from styles.css (--green / --gold / --pale / --r-* / --card-lift /
   --card-sh); headings are .sec__h + .swash; chips are .pill; the phone pill
   is .phone; the messenger rows are .crow with its --brand custom property;
   and the form's error state is the ring and the message colour that
   .track.is-bad / .track__msg already define, so a field that goes wrong on
   this page looks exactly like a field that goes wrong in the footer.
   ========================================================================== */

/* The page shell — .page / .phero / .pcta / .crumbs--green — is defined in
   styles.css by the guide/policy family and is deliberately NOT repeated here:
   this file loads after it, so a second copy would win and these two pages
   would drift away from the other seven.  The markup above uses that shell's
   own classes verbatim. */



/* ── page rhythm ──────────────────────────────────────────────────────────
   One spacing scale for both pages, so a section can be moved or dropped
   without re-tuning its neighbours. */
.cse{position:relative;width:min(var(--cw),100% - 48px);margin:88px auto 0}
.cse--tight{margin-top:62px}
.cse__hd{max-width:68ch}
.cse__hd--c{margin-inline:auto;text-align:center}
.cse__hd--c .swash{margin-inline:auto}
.cse__k{
  display:inline-flex;align-items:center;gap:7px;margin-bottom:9px;
  font-size:12.6px;font-weight:700;color:var(--green-dd);
}
.cse__k::before{content:"";width:16px;height:2px;border-radius:2px;background:var(--gold)}
.cse__hd--c .cse__k::after{content:"";width:16px;height:2px;border-radius:2px;background:var(--gold)}
.cse__x{margin-top:12px;font-size:15.2px;line-height:2.05;color:var(--body)}


/* ══════════════════════════════════════════════════════════════════════════
   درباره ما
   ══════════════════════════════════════════════════════════════════════════ */

/* ── the story ─────────────────────────────────────────────────────────────
   Copy beside the design's own cartouche.  The card is Vector (2).svg — the
   same export the homepage's about slider sits on — so the two pages carry
   the same silhouette rather than two different ideas of one. */
.story{display:grid;grid-template-columns:minmax(0,1fr) 470px;gap:58px;align-items:center}
.story__copy p{margin-top:14px;font-size:15.6px;line-height:2.15;color:var(--body);text-align:justify}
.story__copy p b{color:var(--ink2);font-weight:700}
.story__quote{
  position:relative;margin-top:24px;padding:20px 62px 20px 22px;
  background:#fbfdf8;border:1px solid #e7efdf;border-radius:var(--r-card);
  font-size:15.4px;font-weight:600;line-height:2;color:var(--ink2);
}
.story__quote .ic{
  position:absolute;inset-inline-start:auto;inset-inline-end:20px;top:20px;
  width:28px;height:28px;color:#cfe0bd;stroke-width:1.4;
}
.story__fig{position:relative;justify-self:center;width:100%;max-width:470px}
.story__card{
  position:relative;aspect-ratio:460/289;display:grid;place-items:center;
  background:url("../images/sec-about-shape/Vector (2).svg") center/100% 100% no-repeat;
}
.story__card::before{
  content:"";position:absolute;inset:0;opacity:.07;
  background:url(../images/about-lattice.png) 0 0/40px 80px repeat;
  -webkit-mask:url("../images/sec-about-shape/Vector (2).svg") center/100% 100% no-repeat;
          mask:url("../images/sec-about-shape/Vector (2).svg") center/100% 100% no-repeat;
}
.story__img{
  position:relative;width:72%;max-width:none;
  filter:drop-shadow(0 20px 26px rgba(0,0,0,.22));
}
.story__ring{
  position:absolute;left:calc(50% - 16px);top:calc(50% + 2px);z-index:-1;
  width:124.35%;aspect-ratio:572/360;translate:-50% -50%;pointer-events:none;
  background:url("../images/sec-about-shape/Vector (1).svg") center/100% 100% no-repeat;
}
.story__orn{
  position:absolute;inset-inline-start:-86px;top:-42px;width:96px;opacity:.5;
  pointer-events:none;filter:brightness(0);opacity:.09;
}

/* ── the figures ───────────────────────────────────────────────────────────
   Deliberately .stats/.stat/.stat__n, which is what fx.js already watches:
   marking them any other way would mean a second count-up implementation. */
.stats.figs{
  display:grid;grid-template-columns:repeat(4,1fr);gap:18px;
  padding-inline-start:0;margin-top:34px;
}
/* .stat is a flex row on the homepage — number beside sentence.  Four of them
   across a page is not enough room for that: «۲۴ ساعته» is nowrap and would
   either push the tiles to unequal widths or wrap the display number itself.
   Letting the sentence take a full basis drops it onto its own line instead,
   and the number keeps the line it needs. */
/* Every property this tile depends on is pinned here, including the ones
   .stat already has — styles.css re-lays the homepage figures as a centred
   column at 1024 and again at 680, and inheriting that would turn these
   bordered tiles into three stacked centred lines.  This file loads after
   styles.css, so a `.figs`-prefixed rule outranks those media queries at
   every width without needing to repeat itself in each one. */
.figs .stat{
  flex-direction:row;flex-wrap:wrap;align-items:baseline;text-align:start;gap:0;
  padding:24px 22px;border:1px solid var(--line);border-radius:var(--r-card);
  background:linear-gradient(180deg,#fff,#fbfdf9);
  transition:transform .25s,box-shadow .25s,border-color .25s;
}
.figs .stat:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh);border-color:#fff}
.figs .stat__plus{
  width:17px;height:17px;flex:none;align-self:center;
  margin:0;margin-inline-end:13px;
}
.figs .stat__n{margin:0;margin-inline-end:9px;font-size:27px}
/* a full basis puts the sentence on its own line, so the display number keeps
   the line it needs and the four tiles stay the same width */
.figs .stat__d{
  flex:1 1 100%;width:auto;margin:9px 0 0;
  font-size:13.4px;line-height:1.85;text-align:start;
}

/* ── the five steps ────────────────────────────────────────────────────────
   The connector is a ::before on the list, behind the tiles, so it can run the
   whole row without a spacer element between each pair of steps. */
.flow{position:relative;display:grid;grid-template-columns:repeat(5,1fr);gap:16px;margin-top:40px}
.flow::before{
  content:"";position:absolute;z-index:0;top:33px;inset-inline:9%;height:2px;
  background:repeating-linear-gradient(90deg,#d8e5cc 0 9px,transparent 9px 18px);
}
.flow__i{position:relative;z-index:1;text-align:center}
.flow__b{
  position:relative;display:grid;place-items:center;width:66px;height:66px;margin:0 auto;
  border-radius:50%;background:#fff;border:2px solid var(--pale);color:var(--green);
  transition:background .22s,color .22s,border-color .22s,transform .22s,box-shadow .22s;
}
.flow__b .ic{width:28px;height:28px}
.flow__n{
  position:absolute;top:-4px;inset-inline-end:-4px;
  width:25px;height:25px;display:grid;place-items:center;border-radius:50%;
  background:var(--gold);color:#fff;font-size:12px;font-weight:800;
}
.flow__i:hover .flow__b{
  background:var(--green);border-color:var(--green);color:#fff;
  transform:translateY(-3px);box-shadow:var(--lit-sh);
}
.flow__t{margin-top:14px;font-size:15.4px;font-weight:800;color:var(--ink);line-height:1.6}
.flow__x{margin-top:6px;font-size:13.2px;line-height:1.9;color:var(--body)}

/* ── what the shop guarantees ──────────────────────────────────────────── */
.vals{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:38px}
.val{
  padding:26px 24px 24px;border:1px solid var(--line);border-radius:var(--r-card);
  background:#fff;transition:transform .25s,box-shadow .25s,border-color .25s;
}
.val:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh);border-color:#fff}
.val__b{
  display:grid;place-items:center;width:52px;height:52px;border-radius:15px;
  background:var(--pale);color:var(--green-dd);transition:background .22s,color .22s;
}
.val__b .ic{width:25px;height:25px}
.val:hover .val__b{background:var(--green);color:#fff}
.val__t{margin-top:16px;font-size:16.6px;font-weight:800;color:var(--ink);line-height:1.6}
.val__x{margin-top:8px;font-size:14px;line-height:2;color:var(--body)}

/* ── standards + the two trust badges ──────────────────────────────────── */
.assure{display:grid;grid-template-columns:minmax(0,1fr) 336px;gap:44px;
  margin-top:36px;align-items:start}
.gte{display:grid;gap:12px}
.gte li{
  display:flex;align-items:flex-start;gap:12px;padding:15px 17px;
  border:1px solid var(--line);border-radius:var(--r-md);background:#fcfdfb;
}
.gte__b{
  flex:none;display:grid;place-items:center;width:26px;height:26px;margin-top:1px;
  border-radius:50%;background:var(--green);color:#fff;
}
.gte__b .ic{width:15px;height:15px;stroke-width:2.4}
.gte b{display:block;font-size:14.8px;font-weight:800;color:var(--ink2);line-height:1.65}
.gte span{display:block;margin-top:3px;font-size:13.2px;line-height:1.9;color:var(--body)}
.badges{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.badges .trust{min-height:172px}
.assure__note{
  margin-top:15px;padding:13px 15px;border:1px dashed #dbe6d1;border-radius:var(--r-sm);
  font-size:12.8px;line-height:1.95;color:var(--body);
}

/* ── the roles behind an order ─────────────────────────────────────────────
   Roles, not people: there are no staff photographs or names to publish, and
   inventing them is exactly the kind of claim the rest of the site refuses. */
.roles{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:38px}
.role{
  text-align:center;padding:30px 20px 26px;border-radius:var(--r-card);
  background:linear-gradient(180deg,var(--card-t),var(--card-b));
  transition:transform .25s,box-shadow .25s;
}
.role:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh)}
.role__b{
  display:grid;place-items:center;width:74px;height:82px;margin:0 auto;
  background:#fff;clip-path:url(#sh-quatre);color:var(--green);
}
.role__b .ic{width:30px;height:30px}
.role__t{margin-top:15px;font-size:16px;font-weight:800;color:var(--ink);line-height:1.5}
.role__x{margin-top:7px;font-size:13.2px;line-height:1.95;color:var(--body)}

/* ── the catalogue row ─────────────────────────────────────────────────── */
.catrow{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:34px}
.catrow a{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:20px 12px 18px;border:1px solid var(--line);border-radius:var(--r-card);
  background:#fff;transition:transform .25s,box-shadow .25s,border-color .25s;
}
.catrow img{height:78px;width:auto;object-fit:contain;transition:transform .3s cubic-bezier(.33,.9,.32,1)}
.catrow b{font-size:14.6px;font-weight:700;color:#141414}
.catrow a:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh);border-color:#fff}
.catrow a:hover img{transform:translateY(-5px) scale(1.04)}


/* ══════════════════════════════════════════════════════════════════════════
   تماس با ما
   ══════════════════════════════════════════════════════════════════════════ */

/* ── the four ways in ──────────────────────────────────────────────────── */
.ways{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:38px}
.way{
  display:flex;flex-direction:column;
  padding:26px 22px 22px;border:1px solid var(--line);border-radius:var(--r-card);
  background:#fff;transition:transform .25s,box-shadow .25s,border-color .25s;
}
.way:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh);border-color:#fff}
.way__b{
  display:grid;place-items:center;width:50px;height:50px;border-radius:15px;
  background:var(--pale);color:var(--green-dd);transition:background .22s,color .22s;
}
.way__b .ic{width:24px;height:24px}
.way:hover .way__b{background:var(--green);color:#fff}
.way__t{margin-top:15px;font-size:15.4px;font-weight:800;color:var(--ink)}
.way__v{
  margin-top:7px;font-size:17.4px;font-weight:800;color:var(--green-dd);
  line-height:1.6;unicode-bidi:isolate;word-break:break-word;
}
.way__v--sm{font-size:14.4px;font-weight:700;color:var(--ink2);line-height:1.95}
.way__x{margin-top:6px;font-size:12.8px;line-height:1.9;color:var(--muted)}
.way__go{
  display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:14px;
  font-size:13.2px;font-weight:700;color:var(--green-dd);
}
.way__go .ic{width:15px;height:15px;transition:transform .2s}
.way:hover .way__go .ic{transform:translateX(-3px)}

/* ── the messengers ────────────────────────────────────────────────────────
   .crow verbatim from the floating dock — no .cpanel ancestor appears in any
   of its selectors, so it drops onto a page unchanged.  The one thing that
   does not survive the move is .crow__t i, which is nowrap + ellipsis for a
   302px panel; at page width it is simply allowed to sit. */
.chans{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:30px}
.chans .crow{
  padding:13px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:#fff;
  transition:background .18s,border-color .18s,transform .2s,box-shadow .2s;
}
.chans .crow:hover{
  background:#fff;border-color:color-mix(in srgb,var(--brand,var(--green)) 40%,#fff);
  transform:translateY(-2px);box-shadow:0 10px 22px rgba(20,40,10,.09);
}
.chans .crow__t i{white-space:normal;overflow:visible;text-overflow:clip}

/* ── the form ──────────────────────────────────────────────────────────────
   Native inputs in a <fieldset>; only the painted face is ours.  The invalid
   state is the ring and the message colour .track.is-bad / .track__msg define
   in styles.css, so a field that goes wrong here looks like a field that goes
   wrong anywhere else on the site. */
.cwrap{display:grid;grid-template-columns:minmax(0,1fr) 384px;gap:42px;
  margin-top:38px;align-items:start}
.cform{
  position:relative;padding:30px 30px 26px;border:1px solid var(--line);
  border-radius:var(--r-lg);background:#fff;box-shadow:0 12px 34px rgba(40,60,20,.06);
}
.cform__set{border:0;margin:0;padding:0;min-width:0}
.cform__lg{margin-bottom:14px}
.cform__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px}
.fld{position:relative;display:flex;flex-direction:column;min-width:0}
.fld--full{grid-column:1/-1}
.fld[hidden]{display:none}
.fld__l{
  display:flex;align-items:center;gap:5px;margin-bottom:7px;
  font-size:13.4px;font-weight:700;color:var(--ink2);
}
.fld__l i{font-style:normal;color:#cf5a51}
/* sits beside the label it belongs to, not pushed to the end of the column:
   at the end it lands next to the *next* column's label and reads as though
   it qualifies that one */
.fld__o{font-size:11.4px;font-weight:600;color:var(--muted)}
.fin{
  width:100%;height:54px;padding:0 15px;
  border:1px solid #e2e2e2;border-radius:var(--r-md);background:#fff;
  font:500 14.6px/1.7 var(--font-body);color:#3a3a3a;
  transition:border-color .18s,box-shadow .18s;
}
textarea.fin{height:auto;min-height:142px;padding:14px 15px;line-height:2;resize:vertical}
.fin::placeholder{color:#9c9c9c}
.fin:focus{outline:0;border-color:var(--ring);box-shadow:0 0 0 3px rgba(140,200,91,.2)}
select.fin{
  appearance:none;cursor:pointer;padding-inline-end:40px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238f8f8f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9.5 12 15l6-5.5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-size:16px;background-position:left 15px center;
}
/* the site's one error language, borrowed from .track.is-bad / .track__msg */
.fld.is-bad .fin{border-color:#e0736b;box-shadow:0 0 0 3px rgba(224,115,107,.14)}
.fld__msg{margin-top:7px;font-size:12.6px;font-weight:600;color:#cf5a51;line-height:1.7}
.fld__msg:empty{display:none}
.fld__count{
  position:absolute;inset-inline-start:2px;bottom:-20px;
  font-size:11.6px;font-weight:600;color:var(--muted);
}
.fld__count.is-over{color:#cf5a51}
.cform__foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:26px}
.cform__send{
  display:inline-flex;align-items:center;gap:10px;min-height:54px;padding:6px 30px;
  border-radius:var(--r-md);background:var(--green-d);color:#fff;
  font-size:16px;font-weight:700;line-height:1.45;text-align:center;transition:.2s;
}
.cform__send .ic{width:20px;height:20px}
.cform__send:hover{background:var(--green-dd);transform:translateY(var(--btn-lift));box-shadow:var(--lit-sh)}
.cform__send:active{transform:none}
.cform__note{font-size:12.4px;line-height:1.9;color:var(--muted);max-width:40ch}
.cform__opt{margin-top:30px}   /* clears .fld__count, which hangs -20px below */
.opt{display:flex;align-items:flex-start;gap:9px;font-size:13.4px;line-height:1.85;color:var(--body);cursor:pointer}
.opt input{
  flex:none;width:19px;height:19px;margin:3px 0 0;accent-color:var(--green);cursor:pointer;
}
/* the success face — the form is replaced rather than covered, so nothing
   behind it stays in the tab order */
.cok{text-align:center;padding:14px 8px 8px}
.cok__b{
  display:grid;place-items:center;width:74px;height:74px;margin:0 auto;
  border-radius:50%;background:var(--pale);color:var(--green);
}
.cok__b .ic{width:36px;height:36px;stroke-width:2.2}
.cok__t{margin-top:18px;font-family:var(--font-head);font-size:22px;font-weight:800;color:var(--ink)}
.cok__x{margin-top:10px;font-size:14.4px;line-height:2;color:var(--body)}
.cok__ref{
  display:inline-flex;align-items:center;gap:9px;margin-top:16px;padding:11px 18px;
  border:1px dashed #cfe0bd;border-radius:var(--r-md);background:#fbfdf8;
  font-size:14px;font-weight:700;color:var(--ink2);
}
.cok__ref b{font-size:16px;color:var(--green-dd);letter-spacing:.5px;unicode-bidi:isolate}
.cok__a{display:flex;justify-content:center;gap:11px;flex-wrap:wrap;margin-top:22px}
.cok__again{
  min-height:46px;padding:6px 20px;line-height:1.45;border-radius:var(--r-sm);background:#eee;color:#585858;
  font-size:14.4px;font-weight:700;transition:background .2s;
}
.cok__again:hover{background:#e6e6e6}

/* ── the aside: hours + a live open/closed read ────────────────────────── */
.caside{display:grid;gap:22px}
.hours{padding:24px 24px 20px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff}
.hours__hd{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.hours__h{display:flex;align-items:center;gap:9px;font-size:16.4px;font-weight:800;color:var(--ink)}
.hours__h .ic{width:20px;height:20px;color:var(--green)}
/* the same pill as a product's stock line, so "open" reads like "in stock" */
.hours__st{margin:0}
.hours__l{margin-top:16px}
.hours__l li{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:9px 10px;border-radius:var(--r-sm);
  font-size:13.6px;font-weight:600;color:var(--body);
}
.hours__l li+li{margin-top:2px}
.hours__l li.is-today{background:var(--pale);color:var(--green-dd);font-weight:800}
.hours__l b{font-weight:inherit;color:inherit}
.hours__l span{unicode-bidi:isolate;font-variant-numeric:tabular-nums}
.hours__n{margin-top:14px;font-size:12.4px;line-height:1.9;color:var(--muted)}

/* ── the address card ──────────────────────────────────────────────────────
   A drawn map, not an embed.  An <iframe> map would need the network, which
   breaks the file:// preview the rest of this project is careful to support,
   and would be the only third-party request on the site. */
.mapcard{border:1px solid var(--line);border-radius:var(--r-lg);background:#fff;overflow:hidden}
.mapfig{position:relative;display:block;width:100%;aspect-ratio:4/3;background:#e8efe2}
.mapfig svg{display:block;width:100%;height:100%}
.mapfig__pin{
  position:absolute;left:50%;top:50%;translate:-50% -86%;
  display:grid;place-items:center;width:40px;height:40px;border-radius:50% 50% 50% 4px;
  rotate:-45deg;background:var(--green);color:#fff;
  box-shadow:0 10px 22px rgba(20,60,10,.3);
}
.mapfig__pin .ic{width:19px;height:19px;rotate:45deg}
.mapfig__pulse{
  position:absolute;left:50%;top:50%;translate:-50% -50%;
  width:74px;height:26px;border-radius:50%;background:rgba(103,164,53,.2);
}
.mapcard__b{padding:22px 24px 24px}
.mapcard__t{display:flex;align-items:center;gap:9px;font-size:16.4px;font-weight:800;color:var(--ink)}
.mapcard__t .ic{width:20px;height:20px;color:var(--green)}
.mapcard__a{margin-top:11px;font-size:14.4px;line-height:2.05;color:var(--body)}
.mapcard__meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.mapcard__go{display:flex;flex-wrap:wrap;gap:9px;margin-top:17px}
.mapcard__go a{
  display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:6px 15px;line-height:1.45;
  border:1px solid #e4efda;border-radius:var(--r-sm);background:#fbfdf8;
  font-size:13.4px;font-weight:700;color:var(--green-dd);transition:.2s;
}
.mapcard__go a:hover{background:var(--green);border-color:var(--green);color:#fff;
  transform:translateY(var(--btn-lift))}
.mapcard__go .ic{width:16px;height:16px}

/* ── departments ───────────────────────────────────────────────────────────
   Each card is a control, not a caption: choosing one drops its subject into
   the form above and moves focus to the message box. */
.depts{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:36px}
.dept{
  display:flex;flex-direction:column;text-align:start;height:100%;
  padding:24px 22px 20px;border:1px solid var(--line);border-radius:var(--r-card);
  background:#fff;cursor:pointer;
  transition:transform .25s,box-shadow .25s,border-color .25s;
}
.dept:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh);border-color:#fff}
.dept__b{
  display:grid;place-items:center;width:46px;height:46px;border-radius:14px;
  background:var(--pale);color:var(--green-dd);transition:background .22s,color .22s;
}
.dept__b .ic{width:23px;height:23px}
.dept:hover .dept__b{background:var(--green);color:#fff}
.dept__t{margin-top:14px;font-size:15.6px;font-weight:800;color:var(--ink);line-height:1.55}
.dept__x{margin-top:7px;font-size:13.2px;line-height:1.95;color:var(--body)}
.dept__m{
  display:inline-flex;align-items:center;gap:6px;margin-top:14px;
  font-size:12.2px;font-weight:700;color:var(--green-dd);
}
.dept__m .ic{width:14px;height:14px}

/* ══════════════════════════════════════════════════════════════════════════
   responsive — desktop-first, descending, matching styles.css's own order
   ══════════════════════════════════════════════════════════════════════════ */
@media (max-width:1240px){
  .story{grid-template-columns:minmax(0,1fr) 400px;gap:40px}
  .cwrap{grid-template-columns:minmax(0,1fr) 330px;gap:30px}
  .assure{grid-template-columns:minmax(0,1fr) 290px;gap:30px}
  .ways,.depts{grid-template-columns:repeat(2,1fr)}
  .chans{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:1024px){
  .cse{margin-top:68px}
  .story{grid-template-columns:1fr;gap:38px}
  .story__fig{order:-1;max-width:430px}
  .story__orn{display:none}
  .cwrap{grid-template-columns:1fr}
  .assure{grid-template-columns:1fr}
  .badges{max-width:360px}
  .vals{grid-template-columns:repeat(2,1fr)}
  .roles{grid-template-columns:repeat(2,1fr)}
  .stats.figs{grid-template-columns:repeat(2,1fr)}
  .mapfig{aspect-ratio:16/9}
  .catrow{grid-template-columns:repeat(3,1fr)}
  .flow{grid-template-columns:repeat(3,1fr);gap:26px 16px}
  .flow::before{display:none}
  /* :hover latches on touch, so the lift language stands down — the same
     trade styles.css makes for the product cards at this width */
  .val:hover,.role:hover,.way:hover,.dept:hover,.figs .stat:hover,
  .catrow a:hover,.chans .crow:hover{transform:none}
  .catrow a:hover img{transform:none}
  .flow__i:hover .flow__b{transform:none}
}
@media (max-width:820px){
  .cse{margin-top:56px}
  .chans{grid-template-columns:repeat(2,1fr)}
  .cform{padding:24px 22px 22px}
}
@media (max-width:680px){
  .cse{width:calc(100% - 32px);margin-top:48px}
  .cse__x{font-size:14.4px}
  .story__copy p{font-size:14.6px;line-height:2.05}
  .vals,.roles,.ways,.depts,.catrow,.flow{grid-template-columns:1fr}
  .flow{gap:18px}
  .flow__i{display:flex;align-items:flex-start;gap:16px;text-align:start}
  .flow__b{flex:none;width:56px;height:56px}
  .flow__t{margin-top:2px}
  .stats.figs{grid-template-columns:1fr;gap:12px}
  .figs .stat{padding:18px 18px}
  .cform__grid{grid-template-columns:1fr}
  .cform__send{width:100%;justify-content:center}
  .cform__note{max-width:none}
  .chans{grid-template-columns:1fr}
}
@media (max-width:520px){
  .way__v{font-size:16px}
  .hours,.mapcard__b,.cform{padding-inline:18px}
  .hours__l li{padding-inline:6px;font-size:13px}
  .cok__t{font-size:19px}
}
@media (max-width:400px){
  .cse{width:calc(100% - 24px)}
  .mapcard__go a{flex:1 1 100%;justify-content:center}
}


/* ══════════════════════════════════════════════════════════════════════════
   articles beside a product
   --------------------------------------------------------------------------
   The reverse of a link the blog has always had: each post names the products
   it discusses, so inverting that gives every product the articles that
   mention it.  Deliberately not `.bpost` — that card is the magazine's and
   carries its own grid; this is a compact row for the foot of a product page
   or a category.  It lives here rather than in blog.css because a product
   page does not load blog.css.
   ══════════════════════════════════════════════════════════════════════════ */

.sec--arts{width:min(var(--cw),100% - 48px);margin-inline:auto;margin-top:58px}
.arts__hd{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.arts__x{margin-top:10px;font-size:13.4px;line-height:1.95;color:var(--body)}
.arts{
  margin-top:20px;display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;
}
.art{
  display:grid;grid-template-columns:92px minmax(0,1fr);gap:13px;align-items:center;
  padding:12px;background:#fff;
  border:1px solid var(--line);border-radius:var(--r-card);
  transition:transform .22s,box-shadow .22s,border-color .22s;
}
.art__img{
  width:92px;height:70px;object-fit:cover;border-radius:10px;
  transition:transform .3s cubic-bezier(.33,.9,.32,1);
}
.art__b{min-width:0}
.art__cat{
  display:inline-flex;align-items:center;height:21px;padding:0 9px;
  border-radius:999px;background:var(--pale);color:var(--green-dd);
  font-size:10.6px;font-weight:800;
}
.art__t{
  display:block;margin-top:6px;font-size:13.4px;font-weight:700;color:var(--ink2);
  line-height:1.65;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.art__m{
  display:flex;align-items:center;gap:6px;margin-top:6px;
  font-size:11.4px;font-weight:600;color:var(--muted);
}
.art__m .ic{width:13px;height:13px;color:#b4b4b4}
.art:hover{transform:translateY(var(--card-lift));box-shadow:var(--card-sh);
  border-color:#dde9d1}
.art:hover .art__img{transform:scale(1.05)}
.art:hover .art__t{color:var(--green-dd)}

@media (max-width:1024px){
  .arts{grid-template-columns:repeat(2,minmax(0,1fr))}
  /* :hover latches on touch, as everywhere else on this site */
  .art:hover{transform:none;box-shadow:none}
  .art:hover .art__img{transform:none}
}
@media (max-width:680px){
  .sec--arts{width:calc(100% - 28px);margin-top:42px}
  .arts{grid-template-columns:minmax(0,1fr)}
  .arts__hd{flex-direction:column;gap:12px}
}
