/*
Theme Name: Tazkiyah
Theme URI: https://moknah.io/themes/tazkiyah
Author: Moknah
Author URI: https://moknah.io
Description: An Arabic-first block theme for the Islamic Psychology community. Built around a reading site with five content sections, a site-wide glossary, and a directory — navy, teal and gold, right-to-left by default, with English available alongside.
Requires at least: 6.5
Tested up to: 6.8
Requires PHP: 7.4
Version: 1.0.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: tazkiyah
Tags: blog, one-column, block-patterns, full-site-editing, rtl-language-support, translation-ready
*/

/* Right-to-left is the default here, not an afterthought: the layout is written
   with logical properties throughout, so the English side mirrors correctly
   without a second stylesheet. */

:root{
  /* The three brand colours, sampled from the swatches in the identity file.
     The printed HSL labels beside them round to something slightly different;
     these are the values the artwork is actually drawn in, which is what the
     logo on the page will be matched against. */
  --navy:#174064;
  --navy-deep:#0E2740;
  --teal:#26A2A2;
  --teal-soft:#E3F2F2;
  /*
   * The brand teal with white on it measures 3.1:1 — fine as a border or an
   * accent, under AA the moment it becomes the background of a button's label.
   * This is the same hue carried down until white clears 4.5:1, for the filled
   * interactive states only. The brand teal above is untouched.
   */
  --teal-deep:#1B7E7E;
  --gold:#D0B574;
  --gold-soft:#F7F0E2;
  /* The identity sheet's own background, not plain white. */
  --paper:#F9F9F9;
  --white:#fff;
  --ink:#16222B;
  --ink-2:#48606F;
  /* #7C8F9B measured 3.2:1 on the paper — this is the colour the dates, the
     inactive tabs and the small print are set in, so it was the single biggest
     readability problem on the site. Still plainly a muted grey at 4.9:1. */
  --ink-3:#5F707D;
  --line:#E2E6E4;
  /* Cairo is the identity's own typeface — the only font embedded in the brand
     file, and the one the wordmark itself is drawn in. One family covers both
     scripts, so an English term inside an Arabic sentence stays in the same
     voice instead of switching face mid-line. */
  --display:'Cairo','Tajawal',system-ui,sans-serif;
  --body:'Cairo','Tajawal',system-ui,sans-serif;
  --latin:'Cairo',system-ui,sans-serif;
  --wrap:1140px;
  --r:14px;
  --shadow:0 18px 40px -28px rgba(13,33,64,.32);
}

*{box-sizing:border-box}

body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  -webkit-font-smoothing:antialiased;
}
/* Both languages share one family now, so there is nothing to swap here. */

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:28px}
@media (max-width:680px){.wrap{padding-inline:20px}}

a{color:inherit}

/* ============================================================ HEADER */

header.site{
  background:var(--white);
  border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:50;
}
header.site .bar{
  display:flex;align-items:center;gap:26px;
  padding-block:13px;
}
/*
 * The wordmark, measured off the supplied lockup rather than guessed at.
 *
 * Three things the first attempt got wrong, all visible at a glance: the
 * English line is the same navy as the Arabic and not teal; it is set at very
 * nearly the same size as the Arabic rather than as a small caption under it;
 * and both lines are regular weight, not bold. The two lines also run to the
 * same width, which is what makes the block read as one mark instead of a
 * heading with a subtitle.
 *
 * Sizes are held in variables so the whole lockup scales from one number.
 */
.brand{
  /*
   * Proportions measured off the supplied artwork rather than eyeballed. With
   * the mark's height as the unit: the gutter is 0.10 of it and the words run
   * to 2.23 of it. The type size that produces that width falls out of Cairo's
   * own metrics — 0.2575 — so the whole lockup scales from --mark alone and
   * keeps its proportions at any size.
   */
  --mark:58px;
  --wm:calc(var(--mark) * .2575);
  display:flex;align-items:center;gap:calc(var(--mark) * .1);
  text-decoration:none;flex:none;
  /*
   * Mark on the left, words on the right, on both sides of the site. The header
   * as a whole still flips with the page, but the lockup is artwork: mirroring
   * it would be redrawing somebody's logo, and it stops being theirs.
   */
  direction:ltr;
}
.brand img{height:var(--mark);width:auto;display:block}
/* The mark is 103 × 110, not square — width has to follow the height or the
   motif comes out squashed. */
.brand .brand-mark{height:var(--mark);width:auto}
.brand .wm{display:grid;gap:0}
.brand .wm-a{
  font-family:var(--display);font-weight:400;
  /* The two lines sit close enough in the artwork that the Arabic descenders
     almost meet the English caps. */
  font-size:var(--wm);line-height:1.04;color:var(--navy);
  /* The lockup is set left-to-right, but this line is Arabic and has to shape
     as Arabic inside it. */
  direction:rtl;unicode-bidi:isolate;
}
/*
 * 0.88 of the Arabic size with a little tracking brings the English line to the
 * same width as the Arabic one. The ratio is not the lockup's exactly, because
 * the supplied artwork spells it PSYCHOLGY and the corrected spelling is a
 * letter longer — setting it any larger would push the line wider than the
 * Arabic above it, which is the one proportion the mark depends on.
 *
 * It reads left-to-right whatever the page language, being a name rather than a
 * translation of one.
 */
.brand .wm-b{
  font-family:var(--display);font-weight:400;
  font-size:calc(var(--wm) * .88);line-height:1.05;
  letter-spacing:.02em;color:var(--navy);
  direction:ltr;unicode-bidi:isolate;
}
@media (max-width:560px){
  .brand{--mark:44px}
}

nav.main{display:flex;gap:2px;margin-inline-start:auto;flex-wrap:wrap}
nav.main ul{list-style:none;margin:0;padding:0;display:flex;gap:2px;flex-wrap:wrap}
nav.main a{
  display:block;padding:9px 14px;border-radius:99px;
  font-size:15px;font-weight:500;color:var(--ink-2);
  text-decoration:none;transition:.18s;
}
nav.main a:hover{background:var(--teal-soft);color:var(--navy)}
nav.main .current-menu-item > a,
nav.main [aria-current="page"]{background:var(--teal-soft);color:var(--navy);font-weight:600}

.hdr-actions{display:flex;align-items:center;gap:10px;flex:none}

/* Polylang renders the switcher as a <ul>, so the class given to the block
   lands on the list rather than on the links inside it. Left alone it arrives
   as a bulleted list stacked in the corner of the header. */
.lang,
ul.wp-block-polylang-language-switcher{
  list-style:none;margin:0;padding:0;
  display:flex;align-items:center;gap:6px;
}
.lang li{margin:0}
.lang a{
  display:block;font-size:13px;font-weight:600;color:var(--navy);
  border:1px solid var(--line);background:var(--white);
  padding:8px 14px;border-radius:99px;text-decoration:none;transition:.18s;
  white-space:nowrap;
}
.lang a:hover{border-color:var(--teal);color:var(--teal-deep)}

/* The language you are already reading is not a place to go. */
.lang .current-lang{display:none}

/* ============================================================ SEARCH */

.tz-search{display:flex;gap:10px;align-items:stretch;width:100%}
.tz-search input[type="search"]{
  flex:1;min-width:0;font:inherit;font-size:16px;
  padding:15px 20px;border-radius:99px;
  border:1px solid var(--line);background:var(--white);color:inherit;
  transition:border-color .18s,box-shadow .18s;
}
.tz-search input[type="search"]:focus{
  outline:none;border-color:var(--teal);
  box-shadow:0 0 0 4px rgba(38,162,162,.16);
}
.tz-search button{
  font:inherit;font-weight:600;font-size:15px;border:0;cursor:pointer;
  padding:15px 30px;border-radius:99px;
  background:var(--navy);color:var(--white);transition:.2s;
}
.tz-search button:hover{background:var(--teal-deep)}

/* ============================================================== HERO */

.hero{
  position:relative;overflow:hidden;
  background:linear-gradient(180deg,var(--white),var(--paper));
  border-bottom:1px solid var(--line);
  padding-block:64px 56px;
}
.hero .wrap{position:relative;z-index:1;text-align:center}
.hero .kicker{
  display:inline-flex;align-items:center;gap:8px;
  font-size:13px;font-weight:600;letter-spacing:.02em;
  /* The brand teal on the pale teal is 2.7:1 — the worst pairing on the site.
     This is the same deepened teal the beginner badge already uses on this
     background, so the two pills agree. */
  color:#17726F;background:var(--teal-soft);
  padding:7px 16px;border-radius:99px;margin-bottom:20px;
}
.hero h1{
  font-family:var(--display);font-weight:700;
  font-size:clamp(28px,4.4vw,46px);line-height:1.32;
  color:var(--navy);margin:0 0 16px;max-width:20ch;
  margin-inline:auto;text-wrap:balance;
}
.hero .lede{
  font-size:clamp(16px,2vw,19px);line-height:1.9;color:var(--ink-2);
  max-width:56ch;margin:0 auto 30px;
}
.hero .tz-search{max-width:620px;margin-inline:auto}

/*
 * The geometric pattern from the identity file.
 *
 * Lifted out of the brand PDF rather than approximated: what used to be here
 * were two radial gradients standing in for a motif nobody had looked at.
 *
 * The sheet itself never shows the pattern whole — it crops a corner of it and
 * lets it run off the page edge, bottom-left and top-right. That is how it is
 * used here too, at the same barely-there weight. Placed with physical left and
 * right rather than logical properties, because this is artwork: it sits where
 * the designer put it on both sides of the site.
 *
 * Drawn as a mask so the colour comes from CSS and one file serves every
 * context — teal on paper here, white on navy in the footer.
 */
.tz-pattern::before,.tz-pattern::after{
  content:"";position:absolute;pointer-events:none;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-size:contain;mask-size:contain;
}
.tz-pattern::before{
  left:-95px;bottom:-105px;width:min(330px,34vw);aspect-ratio:924/1064;
  -webkit-mask-image:url(assets/img/pattern-a.png);
  mask-image:url(assets/img/pattern-a.png);
}
.tz-pattern::after{
  right:-55px;top:-75px;width:min(225px,23vw);aspect-ratio:480/715;
  -webkit-mask-image:url(assets/img/pattern-b.png);
  mask-image:url(assets/img/pattern-b.png);
}

/* The hero's text is centred, so both ornaments stay out at the edges where
   they cannot come near the headline. */
.hero::before,.hero::after{background:var(--teal);opacity:.09}
.hero::before{opacity:.075}

/* Decoration is not content: a reader on a screen reader hears none of it, and
   a reader who asked for less motion and contrast gets less of it. */
@media (prefers-contrast:more){
  .tz-pattern::before,.tz-pattern::after{display:none}
}

/* ============================================================ SECTIONS */

.sec{padding-block:56px}
.sec-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:20px;margin-bottom:26px;flex-wrap:wrap;
}
.sec-head h2{
  font-family:var(--display);font-weight:700;
  font-size:clamp(21px,2.6vw,28px);color:var(--navy);margin:0;
}
.sec-head .more{
  font-size:14.5px;font-weight:600;color:var(--teal-deep);
  text-decoration:none;display:inline-flex;align-items:center;gap:6px;
}
.sec-head .more:hover{color:var(--navy)}
.sec-head .arw{transition:transform .25s}
.sec-head .more:hover .arw{transform:translateX(-4px)}
html[dir="ltr"] .sec-head .more:hover .arw{transform:translateX(4px)}

/* ============================================================== CARDS */

.grid{display:grid;gap:20px}
.grid-3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}

.card{
  background:var(--white);border:1px solid var(--line);
  border-radius:var(--r);padding:24px 26px;
  display:flex;flex-direction:column;gap:11px;
  transition:transform .3s cubic-bezier(.2,.7,.3,1),box-shadow .3s,border-color .3s;
}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--teal)}
.card h3,.card h4{
  font-family:var(--display);font-size:19px;font-weight:600;
  line-height:1.5;margin:0;color:var(--navy);
}
.card h3 a,.card h4 a{text-decoration:none;color:inherit}
.card p{margin:0;font-size:15.5px;line-height:1.8;color:var(--ink-2)}
.card .wp-block-post-excerpt{margin:0}
.card .wp-block-post-title{margin:0;font-family:var(--display);font-size:19px;
  font-weight:600;line-height:1.5;color:var(--navy)}
.card .wp-block-post-title a{text-decoration:none}

/* Query Loop wraps every item in its own <li>, which would sit between the grid
   and its cards. */
.grid > .wp-block-post-template{display:contents}
.wp-block-post-template{list-style:none;margin:0;padding:0}
.wp-block-post-template > li.wp-block-post{display:contents}

/* ============================================================== META */

.tz-meta{
  display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  font-size:13.5px;color:var(--ink-3);
}
/* The separator was dimmed to half strength, which put it at 2:1 — fainter
   than anything else on the page and hard to make out. It is decoration, so it
   is hidden from screen readers in the markup instead of being faded out of
   sight for everyone. */
.tz-meta .tz-dot{opacity:.75}
.tz-meta .tz-author{font-weight:600;color:var(--ink-2)}
.tz-level{
  font-size:12px;font-weight:600;padding:3px 10px;border-radius:99px;
  background:var(--gold-soft);color:#7D6234;
}
.tz-level--beginner{background:var(--teal-soft);color:#17726F}
.tz-level--advanced{background:#EDE7F4;color:#5B4A7A}

.tz-kind{
  display:inline-block;font-size:12px;font-weight:600;
  padding:4px 11px;border-radius:99px;
  background:var(--navy);color:var(--white);
}

/*
 * Term pills, and the one rule that keeps them readable.
 *
 * post-terms renders every term as a link, and theme.json paints links navy.
 * So a pill that sets its own text colour still ends up with a navy <a> inside
 * it — which on the navy pill above meant white-on-navy in the rule and
 * navy-on-navy on the page: an empty-looking badge.
 *
 * Stated once for every pill rather than per pill, because the next background
 * anyone adds around a term will hit this too.
 */
.tz-kind a,.type a{color:inherit;text-decoration:none}
.tz-kind a:hover,.type a:hover{text-decoration:underline}

/* The section label and the type sit on one row at the top of a منارة's page. */
.kind-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:14px}

/* ============================================================ ARTICLE */

.ahead{padding-block:44px 22px;max-width:760px;margin-inline:auto}
.ahead h1{
  font-family:var(--display);font-weight:700;
  font-size:clamp(26px,3.6vw,38px);line-height:1.38;
  color:var(--navy);margin:0 0 14px;text-wrap:balance;
}
.ahead .stand{font-size:18px;line-height:1.9;color:var(--ink-2);margin:0 0 18px}

.body{max-width:760px;margin-inline:auto;font-size:17.5px;line-height:2}
.body > * + *{margin-block-start:1.15em}
.body h2{font-size:24px;color:var(--navy);margin-block-start:1.8em}
.body h3{font-size:20px;color:var(--navy);margin-block-start:1.6em}
.body blockquote{
  margin:1.6em 0;padding:18px 24px;
  border-inline-start:3px solid var(--gold);
  background:var(--gold-soft);border-radius:0 var(--r) var(--r) 0;
  font-size:17px;
}
html[dir="rtl"] .body blockquote{border-radius:var(--r) 0 0 var(--r)}
.body ul,.body ol{padding-inline-start:1.4em}
.body li + li{margin-block-start:.5em}
.body img{max-width:100%;height:auto;border-radius:var(--r)}
.body a{color:var(--teal-deep);text-underline-offset:3px}

/* ==================================================== SOURCE / LINK NOTES */

.tz-source-note{
  background:var(--gold-soft);border:1px solid #EADFC7;
  border-radius:var(--r);padding:20px 24px;margin-block:26px;
  max-width:760px;margin-inline:auto;
}
.tz-source-note p{margin:0}
.tz-source-note p + p{margin-block-start:6px}
.tz-src-label{font-weight:700;color:#8A6E36}
.tz-src-title{font-size:16.5px}
.tz-src-detail,.tz-src-by{font-size:14.5px;color:var(--ink-2)}

.tz-link{
  display:inline-flex;align-items:center;gap:9px;
  font-size:14.5px;font-weight:600;text-decoration:none;
  padding:10px 18px;border-radius:99px;
  background:var(--navy);color:var(--white);transition:.2s;
}
/*
 * The hover state has to restate the colour, not just the background.
 *
 * theme.json paints every link teal on hover. This button's hover background is
 * also teal, so leaving the colour to be inherited gave teal text on a teal
 * pill — the label simply vanished under the pointer.
 *
 * Third time this has bitten: a pill whose text is a link, a pill whose text is
 * a term, and now a button. Anything here that paints its own background owns
 * its own text colour in every state.
 */
.tz-link:hover,
.tz-link:focus-visible,
.tz-link:active{background:var(--teal-deep);color:var(--white)}
/* The host name is dimmed at rest against the navy, where it has contrast to
   spare. On the hover teal it does not, so it comes back to full strength. */
.tz-link:hover .tz-link-host,
.tz-link:focus-visible .tz-link-host{opacity:1}
.tz-link-host{font-family:var(--latin);font-weight:400;opacity:.75;font-size:13px}
.tz-cite{font-size:14px;color:var(--ink-3)}
.tz-source-link{display:flex;flex-direction:column;gap:12px;align-items:flex-start}

.tz-term-en{
  font-family:var(--latin);font-size:14px;font-weight:500;
  color:var(--ink-3);margin:2px 0 0;
}

/* ============================================================== TABS */

.tz-tabs{max-width:900px;margin-inline:auto}
.tz-tabnav{
  display:flex;gap:6px;border-bottom:1px solid var(--line);
  margin-bottom:28px;flex-wrap:wrap;
}
.tz-tab{
  padding:12px 22px;font-size:15.5px;font-weight:600;
  color:var(--ink-3);text-decoration:none;
  border-bottom:2px solid transparent;margin-bottom:-1px;transition:.18s;
}
.tz-tab:hover{color:var(--navy)}
.tz-tab.is-on{color:var(--navy);border-bottom-color:var(--teal)}

/* Both panels are in the page; the one you are not reading is hidden. Stated
   explicitly because a stray display rule on a wrapper would otherwise beat
   the browser's own handling of the hidden attribute and show both at once. */
.tz-panel[hidden]{display:none}

.tz-glossary{margin:0}
.tz-gloss-item{
  padding-block:20px;border-bottom:1px solid var(--line);
}
.tz-gloss-item dt{
  font-family:var(--display);font-size:19px;font-weight:600;color:var(--navy);
  display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:0 0 6px;
}
.tz-gloss-item dt a{text-decoration:none}
.tz-gloss-item dt a:hover{color:var(--teal-deep)}
.tz-gloss-item dd{margin:0;font-size:16px;line-height:1.85;color:var(--ink-2)}

.tz-sources{list-style:none;margin:0;padding:0}
.tz-source-item{
  padding-block:18px;border-bottom:1px solid var(--line);
  display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;
}
.tz-source-name{
  font-family:var(--display);font-size:17px;font-weight:600;
  color:var(--navy);text-decoration:none;
}
.tz-source-name:hover{color:var(--teal-deep)}
.tz-out{
  font-family:var(--latin);font-size:13px;color:var(--teal-deep);
  text-decoration:none;margin-inline-start:auto;
}
.tz-empty{color:var(--ink-3);font-size:16px}

/* ============================================================== FORMS */

/* One form at a time now, so there is no stack to space out — just the tab
   strip above whichever panel is showing. */
.tz-forms{max-width:760px;margin-inline:auto}
.tz-forms .tz-tabnav{margin-bottom:24px}
.tz-form{
  background:var(--white);border:1px solid var(--line);
  border-radius:var(--r);padding:30px 32px;
}
.tz-form h2{
  font-family:var(--display);font-size:21px;font-weight:700;
  color:var(--navy);margin:0 0 8px;
}
.tz-form-lede{margin:0 0 22px;font-size:15.5px;color:var(--ink-2);line-height:1.8}
.tz-field{margin:0 0 16px}
.tz-field label{
  display:block;font-weight:600;font-size:15px;margin-bottom:7px;color:var(--ink);
}
.tz-req{font-weight:400;font-size:12.5px;color:var(--ink-3)}
.tz-field input,.tz-field textarea,.tz-field select{
  display:block;width:100%;font:inherit;font-size:16px;
  padding:13px 16px;border-radius:10px;
  border:1px solid var(--line);background:var(--paper);color:inherit;
  transition:border-color .18s,box-shadow .18s;
}
.tz-field textarea{min-height:8rem;resize:vertical;line-height:1.75}
.tz-field input:focus,.tz-field textarea:focus,.tz-field select:focus{
  outline:none;border-color:var(--teal);background:var(--white);
  box-shadow:0 0 0 3px rgba(38,162,162,.15);
}
.tz-btn{
  font:inherit;font-size:15.5px;font-weight:600;border:0;cursor:pointer;
  padding:14px 34px;border-radius:99px;
  background:var(--navy);color:var(--white);transition:.2s;
}
.tz-btn:hover{background:var(--teal-deep)}
.tz-btn:active{transform:translateY(1px)}

/* Off-screen rather than display:none — a robot reads the stylesheet too, and
   an input that is never rendered is one it learns to skip. */
.tz-hp{position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap}

.tz-note{padding:14px 18px;border-radius:10px;font-size:15px;margin:0 0 20px}
.tz-note--ok{background:var(--teal-soft);color:#12615F}
.tz-note--bad{background:#FBEAEA;color:#A13232}

/* ============================================================ DIRECTORY */

.manara{
  background:var(--white);border:1px solid var(--line);border-radius:var(--r);
  padding:24px 26px;display:flex;flex-direction:column;gap:10px;
  transition:transform .3s cubic-bezier(.2,.7,.3,1),box-shadow .3s,border-color .3s;
}
.manara:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--gold)}
/* Not scoped to the card, because the same badge appears on a منارة's own page
   and it should look identical in both places. */
.type{
  display:inline-block;
  /* #8A6E36 measured 4.24:1 on the gold — under AA for text this size, which at
     12px does not qualify as large however bold it is. This clears 4.5. */
  font-size:12px;font-weight:600;color:#7D6234;background:var(--gold-soft);
  padding:4px 11px;border-radius:99px;
}
.manara .type{align-self:flex-start}
/* Link colour and underline for this pill are handled with the others, up by
   .tz-kind. */
.manara h3{margin:0;font-family:var(--display);font-size:18px;color:var(--navy)}
.manara p{margin:0;font-size:15px;line-height:1.8;color:var(--ink-2)}
.manara .tz-manara-foot{margin-block-start:auto}

/* The link and the date added share a row, wrapping to two on a narrow card
   rather than squeezing the host name. */
.tz-manara-foot{
  display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;
  padding-block-start:4px;
}
.tz-added{font-size:12.5px;color:var(--ink-3)}
.tz-added time{white-space:nowrap}

/* ============================================================== SEARCH PAGE */

.result{
  padding-block:22px;border-bottom:1px solid var(--line);
  display:flex;flex-direction:column;gap:8px;
}
.result .wp-block-post-title{
  margin:0;font-family:var(--display);font-size:19px;font-weight:600;color:var(--navy);
}
.result .wp-block-post-title a{text-decoration:none}
.result .wp-block-post-title a:hover{color:var(--teal-deep)}
.result .wp-block-post-excerpt{margin:0;font-size:15.5px;color:var(--ink-2)}

/* ============================================================ PAGINATION */

.pager{margin-block-start:40px;display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.pager a,.pager .page-numbers{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:40px;height:40px;padding-inline:14px;border-radius:10px;
  text-decoration:none;font-size:14.5px;font-weight:600;
  border:1px solid var(--line);color:var(--ink-2);transition:.18s;
}
.pager a:hover{border-color:var(--teal);color:var(--teal-deep)}
.pager .current{background:var(--navy);color:var(--white);border-color:transparent}

/* ============================================================== FOOTER */

footer.site{
  background:var(--navy-deep);color:#C6D6E0;margin-block-start:70px;
  padding-block:52px 32px;
  position:relative;overflow:hidden;
}
/* The same ornament on the dark end of the page, in white and fainter still. */
footer.site::before,footer.site::after{background:#fff;opacity:.055}
footer.site::before{bottom:-120px;width:min(300px,30vw)}
footer.site::after{top:-90px;width:min(210px,22vw)}
footer.site a{color:#C6D6E0;text-decoration:none;transition:.18s}
footer.site a:hover{color:var(--teal)}
.fgrid{display:grid;gap:36px;grid-template-columns:2fr 1fr 1fr 1fr}
@media (max-width:820px){.fgrid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.fgrid{grid-template-columns:1fr}}
footer.site h4{
  font-family:var(--display);font-size:13px;font-weight:600;
  letter-spacing:.08em;color:var(--gold);margin:0 0 14px;
}
footer.site ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
footer.site .about{font-size:14.5px;line-height:1.9;max-width:38ch;opacity:.85}
.fbot{
  margin-block-start:36px;padding-block-start:22px;
  border-top:1px solid rgba(255,255,255,.12);
  font-size:13px;opacity:.65;display:flex;justify-content:space-between;
  gap:16px;flex-wrap:wrap;
}

/* ============================================================== CURSORS */

a[href],button:not([disabled]),summary,label[for],[role="button"],
.tz-tab,.tz-btn,.tz-link,.lang{cursor:pointer}
input[type="text"],input[type="search"],input[type="email"],
input[type="url"],textarea{cursor:text}
select{cursor:pointer}
button[disabled],[aria-disabled="true"]{cursor:not-allowed}

a:focus-visible,button:focus-visible,input:focus-visible,
select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--teal);outline-offset:3px;border-radius:4px;
}

::selection{background:var(--teal-soft);color:var(--navy)}

.screen-reader-text{
  position:absolute!important;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;
}

/* ============================================================== MOTION */

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;transition-duration:.001ms!important;
  }
  .card:hover,.manara:hover{transform:none}
}

/* ============================================================== PRINT */

@media print{
  header.site,footer.site,.tz-search,.tz-forms,.pager{display:none!important}
  body{background:#fff;color:#000;font-size:11.5pt}
  .body,.wrap,.ahead{max-width:none;padding:0}
  .body a[href^="http"]::after{content:" (" attr(href) ")";font-size:9pt;opacity:.7}
  @page{margin:18mm 20mm}
}

/* ============================================================== MOBILE */

@media (max-width:900px){
  header.site .bar{flex-wrap:wrap;gap:14px}
  nav.main{order:3;width:100%;margin-inline-start:0;
    overflow-x:auto;padding-block-end:4px}
  nav.main ul{flex-wrap:nowrap}
  nav.main a{white-space:nowrap}
  .hdr-actions{margin-inline-start:auto}
}
@media (max-width:680px){
  .hero{padding-block:40px 36px}
  .sec{padding-block:38px}
  .card,.manara,.tz-form{padding:20px 20px}
  .tz-search{flex-direction:column}
  .tz-search button{width:100%}
}
