{"id":190,"date":"2026-09-03T22:50:51","date_gmt":"2026-09-03T22:50:51","guid":{"rendered":"https:\/\/tetratext.expressdevel.com\/?page_id=190"},"modified":"2026-09-04T11:10:48","modified_gmt":"2026-09-04T11:10:48","slug":"tetratext-home","status":"publish","type":"page","link":"https:\/\/tetratext.com\/","title":{"rendered":"TetraText"},"content":{"rendered":"\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Bricolage+Grotesque:opsz,wght@12..96,700;12..96,800&#038;family=Archivo:wght@400;500;600;700;800&#038;display=swap\">\n<style>\n\/* ============================================================\n   TetraText \u2014 \"Ink & Ivory\"\n   The tile is the brand. Every other surface stays quiet.\n   Palette, type and tile geometry follow the app redesign system:\n   seven values, each owning exactly one meaning.\n   ============================================================ *\/\n:root{\n  color-scheme: dark;\n\n  --ink:      #0E1220;   \/* board and page ground            *\/\n  --ink-2:    #161B2C;   \/* cards, sheets, navigation        *\/\n  --ink-3:    #212842;   \/* raised edges, inputs             *\/\n  --ink-4:    #2E3757;   \/* hairlines on raised surfaces     *\/\n  --bone:     #F2E8D8;   \/* tile face, primary text          *\/\n  --bone-2:   #DCCFB8;   \/* tile bottom edge                 *\/\n  --letter:   #11141F;   \/* the letter printed on a tile     *\/\n  --gold:     #FFB627;   \/* score, coins, the one primary    *\/\n  --gold-2:   #E09612;   \/* gold pressed \/ gold edge         *\/\n  --mint:     #38D9A9;   \/* word accepted, streaks, best     *\/\n  --mint-2:   #22B98A;\n  --violet:   #8B6DFF;   \/* rare letters only \u2014 J Q X Z      *\/\n  --violet-2: #6E52D6;\n  --dim:      #8891AB;   \/* secondary text, 6.0:1 on ink     *\/\n  --dim-2:    #5C6480;   \/* rules and dividers only          *\/\n  \/* Coral #FF6B6B is the danger value. This page has no danger states,\n     so it is deliberately absent rather than borrowed for decoration. *\/\n\n  --display: \"Bricolage Grotesque\", \"Archivo\", system-ui, sans-serif;\n  --ui: \"Archivo\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n\n  --page: 1120px;\n  --gutter: clamp(18px, 5vw, 40px);\n  --radius: 14px;\n}\n\n*,*::before,*::after{ box-sizing:border-box }\n\nhtml{ scroll-behavior:smooth }\nbody{\n  margin:0;\n  background:var(--ink);\n  color:var(--bone);\n  font:400 17px\/1.62 var(--ui);\n  -webkit-font-smoothing:antialiased;\n  overflow-x:hidden;\n}\nimg{ max-width:100%; display:block }\na{ color:var(--bone); text-decoration:none }\nh1,h2,h3{ font-family:var(--display); font-weight:800; text-wrap:balance; margin:0 }\np{ margin:0 }\n:focus-visible{ outline:3px solid var(--gold); outline-offset:3px; border-radius:4px }\n\n.wrap{ width:min(var(--page), 100% - var(--gutter)*2); margin-inline:auto }\n\n\/* ---------- the tile: one component, four states ------------ *\/\n.tile{\n  --cell:56px;\n  position:relative;\n  width:var(--cell); height:var(--cell);\n  flex:0 0 auto;\n  display:grid; place-items:center;\n  border-radius:17%;\n  background:var(--bone);\n  box-shadow: inset 0 calc(var(--cell) * -0.045) 0 var(--bone-2);\n  font-family:var(--ui);\n  color:var(--letter);\n  user-select:none;\n}\n.tile b{\n  font-size:calc(var(--cell) * .52);\n  font-weight:800;\n  line-height:1;\n  transform:translateY(calc(var(--cell) * -.02));\n}\n.tile i{\n  position:absolute;\n  right:11%; bottom:6%;\n  font-style:normal;\n  font-weight:700;\n  font-size:calc(var(--cell) * .19);\n  font-variant-numeric:tabular-nums;\n  opacity:.62;\n}\n.tile.rare{ background:var(--violet); box-shadow: inset 0 calc(var(--cell) * -0.045) 0 var(--violet-2) }\n.tile.word{ background:var(--mint); box-shadow: inset 0 calc(var(--cell) * -0.045) 0 var(--mint-2) }\n.tile.empty{\n  background:transparent;\n  box-shadow:none;\n  border:1.5px dashed var(--ink-4);\n}\n\n\/* ---------- shared furniture -------------------------------- *\/\n.eyebrow{\n  display:flex; align-items:center; gap:10px;\n  font:700 12px\/1 var(--ui);\n  letter-spacing:.14em; text-transform:uppercase;\n  color:var(--dim);\n  margin-bottom:18px;\n}\n.eyebrow::before{\n  content:\"\"; width:14px; height:14px; flex:0 0 auto;\n  border-radius:17%;\n  background:var(--bone);\n  box-shadow: inset 0 -1px 0 var(--bone-2);\n}\n.lede{ color:var(--dim); font-size:1.06rem; max-width:60ch }\n\nsection{ padding-block: clamp(64px, 9vw, 116px) }\n.sec-head{ margin-bottom:clamp(32px,5vw,52px) }\n.sec-head h2{ font-size:clamp(1.9rem, 4.4vw, 2.9rem); line-height:1.12; margin-bottom:14px }\n\n.card{\n  background:var(--ink-2);\n  border:1px solid var(--ink-3);\n  border-radius:var(--radius);\n  padding:clamp(20px,3vw,28px);\n}\n.card h3{ font-size:1.22rem; margin-bottom:8px }\n.card p{ color:var(--dim); font-size:.97rem; line-height:1.6 }\n\n.btn{\n  display:inline-flex; align-items:center; justify-content:center; gap:9px;\n  padding:15px 26px;\n  border-radius:12px;\n  font:700 16px\/1 var(--ui);\n  border:1px solid transparent;\n  cursor:pointer;\n  transition:transform .12s ease, background-color .12s ease, border-color .12s ease;\n}\n.btn:active{ transform:translateY(1px) }\n.btn-gold{ background:var(--gold); color:var(--letter); box-shadow: inset 0 -3px 0 var(--gold-2) }\n.btn-gold:hover{ background:#FFC44D }\n.btn-ghost{ background:transparent; color:var(--bone); border-color:var(--ink-4) }\n.btn-ghost:hover{ background:var(--ink-2); border-color:var(--dim-2) }\n\n\n\/* ---------- store badges ------------------------------------ *\/\n\/* Google's badge ships with 16.4% transparent padding; Apple's has none.\n   Sizing Google to H\/0.672 and pulling the padding back with a negative\n   margin makes both badges read at exactly --badge-h. Neither asset is\n   altered, which is what both sets of brand guidelines require. *\/\n:root{ --badge-h:44px }\n.badge{ display:inline-flex; align-items:center; border-radius:9px }\n.badge img{ display:block; width:auto; max-width:none }\n.badge-apple img{ height:var(--badge-h) }\n.badge-google img{ height:calc(var(--badge-h) \/ .672); margin:calc(var(--badge-h) * -.244) }\n.badge:hover{ opacity:.85 }\n.badge:focus-visible{ outline:3px solid var(--gold); outline-offset:4px }\n@media (max-width:420px){ :root{ --badge-h:40px } }\n\n\/* ---------- navigation -------------------------------------- *\/\n.nav{\n  position:sticky; top:0; z-index:40;\n  background:rgba(14,18,32,.86);\n  backdrop-filter:blur(14px);\n  border-bottom:1px solid var(--ink-3);\n}\n.nav-in{ display:flex; align-items:center; gap:20px; height:66px }\n.brand{ display:flex; align-items:center; gap:11px; margin-right:auto; font-family:var(--display); font-weight:800; font-size:1.16rem; letter-spacing:-.01em }\n.brand .logo-mark{ width:31px; height:31px; display:block; border-radius:9px; flex:0 0 auto }\n.nav-links{ display:flex; gap:26px }\n.nav-links a{ color:var(--dim); font-size:.94rem; font-weight:500 }\n.nav-links a:hover{ color:var(--bone) }\n.nav .btn{ padding:11px 19px; font-size:14.5px }\n@media (max-width:860px){ .nav-links{ display:none } }\n\n\/* ---------- hero -------------------------------------------- *\/\n.hero{ padding-block: clamp(48px,7vw,88px) clamp(40px,6vw,72px) }\n.hero-grid{\n  display:grid;\n  grid-template-columns: minmax(0,1.05fr) minmax(0,.95fr);\n  gap:clamp(36px,6vw,72px);\n  align-items:center;\n}\n.hero h1{\n  font-size:clamp(2.6rem, 6.4vw, 4.35rem);\n  line-height:1.02;\n  letter-spacing:-.028em;\n  margin-bottom:22px;\n}\n.hero h1 em{ font-style:normal; color:var(--gold) }\n.hero p.lede{ font-size:clamp(1.04rem,1.9vw,1.2rem) }\n.hero-cta{ display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:32px }\n.hero-note{ margin-top:18px; color:var(--dim-2); font-size:.86rem }\n.hero-note b{ color:var(--dim); font-weight:600 }\n@media (max-width:900px){\n  .hero-grid{ grid-template-columns:1fr; gap:44px }\n  .hero-visual{ order:-1 }\n}\n\n\/* the playable board -------------------------------------- *\/\n.board-shell{ display:flex; flex-direction:column; align-items:center; gap:14px }\n.board{\n  --cols:6; --rows:8; --gap:6px;\n  position:relative;\n  width:min(340px, 82vw);\n  aspect-ratio: 6 \/ 8;\n  display:grid;\n  grid-template-columns:repeat(var(--cols),1fr);\n  grid-template-rows:repeat(var(--rows),1fr);\n  gap:var(--gap);\n  padding:var(--gap);\n  background:var(--ink);\n  border:1px solid var(--ink-3);\n  border-radius:18px;\n  box-shadow: 0 26px 60px rgba(0,0,0,.5);\n  cursor:pointer;\n}\n.board .cell{ border:1.5px dashed var(--ink-4); border-radius:14% }\n.board .tile{ width:100%; height:100%; --cell: min(46px, 12.2vw) }\n.board .drop{ transition: transform .46s cubic-bezier(.28,.9,.34,1.12), opacity .2s linear }\n.board .drop.pre{ transform:translateY(-320px); opacity:0 }\n.board .tile.word{ transition: background-color .22s ease, box-shadow .22s ease }\n.board-hud{\n  display:flex; align-items:baseline; gap:10px;\n  font-variant-numeric:tabular-nums;\n}\n.board-hud .lbl{ font:700 11px\/1 var(--ui); letter-spacing:.14em; text-transform:uppercase; color:var(--dim) }\n.board-hud .val{ font:800 30px\/1 var(--ui); color:var(--gold) }\n.board-hud .pop{\n  font:800 15px\/1 var(--ui); color:var(--mint);\n  opacity:0; transform:translateY(6px);\n  transition:opacity .3s ease, transform .5s ease;\n}\n.board-hud .pop.on{ opacity:1; transform:translateY(-6px) }\n\n\/* ---------- proof strip ------------------------------------- *\/\n.proof{\n  border-block:1px solid var(--ink-3);\n  padding-block:26px;\n}\n.proof-in{ display:grid; grid-template-columns:repeat(4,1fr); gap:22px }\n.proof dt{ font:800 clamp(1.35rem,2.6vw,1.75rem)\/1 var(--ui); color:var(--bone); font-variant-numeric:tabular-nums }\n.proof dd{ margin:7px 0 0; color:var(--dim); font-size:.86rem; line-height:1.4 }\n@media (max-width:700px){ .proof-in{ grid-template-columns:repeat(2,1fr); gap:24px 18px } }\n\n\/* ---------- how it plays ------------------------------------ *\/\n.steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px }\n.step{ position:relative; padding-top:8px }\n.step .n{\n  font:800 13px\/1 var(--ui); color:var(--gold);\n  font-variant-numeric:tabular-nums;\n  letter-spacing:.06em;\n  display:block; margin-bottom:14px;\n}\n.step h3{ font-size:1.3rem; margin-bottom:10px }\n.step p{ color:var(--dim); font-size:.98rem }\n.step-art{ display:flex; gap:5px; margin-bottom:20px; height:52px; align-items:flex-end }\n@media (max-width:820px){ .steps{ grid-template-columns:1fr; gap:34px } }\n\n.aside-note{\n  margin-top:36px; padding:20px 22px;\n  border-left:2px solid var(--mint);\n  background:var(--ink-2);\n  border-radius:0 var(--radius) var(--radius) 0;\n  color:var(--dim); font-size:.97rem;\n}\n.aside-note b{ color:var(--bone); font-weight:600 }\n\n\/* ---------- scoring ----------------------------------------- *\/\n.score-lab{\n  display:grid;\n  grid-template-columns: minmax(0,1fr) 320px;\n  gap:clamp(24px,4vw,44px);\n  align-items:start;\n}\n@media (max-width:900px){ .score-lab{ grid-template-columns:1fr } }\n.lab{ background:var(--ink-2); border:1px solid var(--ink-3); border-radius:var(--radius); padding:clamp(20px,3vw,30px) }\n.lab-label{ font:700 11px\/1 var(--ui); letter-spacing:.14em; text-transform:uppercase; color:var(--dim); display:block; margin-bottom:12px }\n.lab input{\n  width:100%;\n  background:var(--ink);\n  border:1px solid var(--ink-4);\n  border-radius:11px;\n  color:var(--bone);\n  font:800 21px\/1 var(--ui);\n  letter-spacing:.16em;\n  text-transform:uppercase;\n  padding:15px 17px;\n}\n.lab input::placeholder{ color:var(--dim-2); letter-spacing:.1em }\n.lab input:focus{ border-color:var(--gold); outline:none }\n.rack{ display:flex; flex-wrap:wrap; gap:6px; margin:24px 0 22px; min-height:58px; align-items:center }\n.rack .tile{ --cell:clamp(38px,8.4vw,54px) }\n.chips{ display:flex; flex-wrap:wrap; gap:8px; margin-top:4px }\n.chip{\n  background:transparent; border:1px solid var(--ink-4); color:var(--dim);\n  border-radius:99px; padding:7px 14px;\n  font:600 12.5px\/1 var(--ui); letter-spacing:.09em; text-transform:uppercase;\n  cursor:pointer;\n}\n.chip:hover{ color:var(--bone); border-color:var(--dim-2) }\n\n.math{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; padding-top:22px; border-top:1px solid var(--ink-3); font-variant-numeric:tabular-nums }\n.math .term{ display:flex; flex-direction:column; gap:5px }\n.math .term span{ font:600 10.5px\/1 var(--ui); letter-spacing:.13em; text-transform:uppercase; color:var(--dim) }\n.math .term strong{ font:800 20px\/1 var(--ui); color:var(--bone) }\n.math .op{ font:700 17px\/1 var(--ui); color:var(--dim-2); align-self:flex-end; padding-bottom:1px }\n.math .out{ margin-left:auto; text-align:right }\n.math .out span{ font:600 10.5px\/1 var(--ui); letter-spacing:.13em; text-transform:uppercase; color:var(--dim); display:block; margin-bottom:5px }\n.math .out strong{ font:800 clamp(28px,4.6vw,38px)\/1 var(--ui); color:var(--gold) }\n.math .out em{ font-style:normal; font:600 13px\/1 var(--ui); color:var(--mint); display:block; margin-top:7px }\n\n.mult-table{ width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums }\n.mult-table caption{ text-align:left; font:700 11px\/1 var(--ui); letter-spacing:.14em; text-transform:uppercase; color:var(--dim); padding-bottom:14px }\n.mult-table th, .mult-table td{ text-align:left; padding:10px 0; border-bottom:1px solid var(--ink-3); font-size:.94rem }\n.mult-table th{ color:var(--dim); font-weight:500 }\n.mult-table td{ color:var(--bone); font-weight:700; text-align:right }\n.mult-table tr:last-child th, .mult-table tr:last-child td{ border-bottom:0 }\n.side-note{ color:var(--dim); font-size:.88rem; margin-top:18px; line-height:1.55 }\n\n\/* ---------- boards ------------------------------------------ *\/\n.boards{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,2.4vw,26px) }\n.b-card{ display:flex; flex-direction:column; align-items:center; gap:16px; text-align:center }\n.mini{\n  height:clamp(140px,22vw,190px);\n  aspect-ratio:1\/2;\n  display:grid;\n  grid-template-columns:repeat(var(--c),1fr);\n  grid-template-rows:repeat(var(--r),1fr);\n  gap:var(--g);\n  padding:var(--g);\n  background:var(--ink-2);\n  border:1px solid var(--ink-3);\n  border-radius:9px;\n}\n.mini i{ border:1px dashed var(--ink-4); border-radius:2px; display:block }\n.mini i.f{ background:var(--bone); border:0; border-radius:15% }\n.mini i.v{ background:var(--violet); border:0; border-radius:15% }\n.b-card h3{ font-size:1.02rem }\n.b-card p{ color:var(--dim); font-size:.83rem; font-variant-numeric:tabular-nums }\n.b-range{ color:var(--dim); font-size:.79rem; margin-top:7px }\n.b-range b{ color:var(--bone); font-weight:700 }\n@media (max-width:760px){ .boards{ grid-template-columns:repeat(2,1fr); gap:30px 18px } }\n\n\/* difficulty + leaderboard matrix *\/\n.matrix{ margin-top:clamp(40px,6vw,64px); overflow-x:auto }\n.matrix table{ width:100%; min-width:520px; border-collapse:collapse }\n.matrix caption{ text-align:left; color:var(--dim); font-size:.95rem; padding-bottom:18px; max-width:62ch }\n.matrix th, .matrix td{ padding:13px 14px; border:1px solid var(--ink-3); font-size:.92rem }\n.matrix thead th{ color:var(--dim); font:700 11px\/1 var(--ui); letter-spacing:.13em; text-transform:uppercase; background:var(--ink-2) }\n.matrix tbody th{ text-align:left; color:var(--bone); font-weight:600; background:var(--ink-2) }\n.matrix td{ color:var(--dim); text-align:center; font-variant-numeric:tabular-nums }\n\/* One tile per leaderboard \u2014 the shape of the table is the claim. *\/\n.matrix td .mark{\n  display:inline-block; width:15px; height:15px;\n  border-radius:17%;\n  background:var(--bone);\n  box-shadow: inset 0 -1px 0 var(--bone-2);\n}\n.sr{ position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0 }\n\n\/* ---------- power-ups --------------------------------------- *\/\n.powers{ display:grid; grid-template-columns:repeat(5,1fr); gap:16px }\n.power{ text-align:left }\n.power svg{ width:26px; height:26px; margin-bottom:16px; stroke:var(--gold); fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round }\n.power h3{ font-size:1.02rem; margin-bottom:7px }\n.power p{ font-size:.88rem; color:var(--dim); line-height:1.55 }\n@media (max-width:940px){ .powers{ grid-template-columns:repeat(2,1fr); gap:22px } }\n@media (max-width:480px){ .powers{ grid-template-columns:1fr } }\n\n\/* ---------- screenshots ------------------------------------- *\/\n.shots{\n  display:grid;\n  grid-auto-flow:column;\n  grid-auto-columns:minmax(210px, 1fr);\n  gap:clamp(14px,2.4vw,24px);\n  overflow-x:auto;\n  padding-bottom:14px;\n  scroll-snap-type:x proximity;\n}\n.shot{ scroll-snap-align:start }\n.phone{\n  border:1px solid var(--ink-4);\n  background:var(--ink-2);\n  border-radius:20px;\n  padding:7px;\n  overflow:hidden;\n}\n.phone img{ border-radius:14px; width:100%; height:auto }\n.shot p{ color:var(--dim); font-size:.86rem; margin-top:14px; line-height:1.5 }\n.shot p b{ display:block; color:var(--bone); font-weight:600; font-size:.94rem; margin-bottom:3px }\n.shot .plat{ display:inline-block; margin-bottom:9px; padding:4px 9px; border:1px solid var(--ink-4); border-radius:99px;\n  font:700 10px\/1 var(--ui); letter-spacing:.14em; text-transform:uppercase; color:var(--dim) }\n\n\/* ---------- community + close ------------------------------- *\/\n.duo{ display:grid; grid-template-columns:repeat(2,1fr); gap:18px }\n@media (max-width:760px){ .duo{ grid-template-columns:1fr } }\n.duo .card{ display:flex; flex-direction:column; gap:12px; align-items:flex-start }\n.duo .card a.link{ color:var(--gold); font-weight:700; font-size:.95rem; margin-top:auto }\n.duo .card a.link:hover{ text-decoration:underline }\n\n.close{ text-align:center; border-top:1px solid var(--ink-3) }\n.close h2{ font-size:clamp(2rem,5vw,3.2rem); line-height:1.06; margin-bottom:18px }\n.close .lede{ margin-inline:auto }\n.close-cta{ display:flex; flex-wrap:wrap; align-items:center; gap:14px; justify-content:center; margin-top:32px }\n.close-tiles{ display:flex; gap:6px; justify-content:center; margin-bottom:30px }\n.close-tiles .tile{ --cell:clamp(34px,6vw,46px) }\n\nfooter{ border-top:1px solid var(--ink-3); padding-block:38px; color:var(--dim-2); font-size:.86rem }\n.foot-in{ display:flex; flex-wrap:wrap; gap:16px 28px; align-items:center }\nfooter a{ color:var(--dim) }\nfooter a:hover{ color:var(--bone) }\nfooter .sp{ margin-left:auto }\n.tm{ max-width:46ch; font-size:.76rem; line-height:1.45 }\n\n\/* ---------- motion ------------------------------------------ *\/\n\/* Gated on .js so that with scripts blocked the copy is simply visible,\n   rather than sitting at opacity 0 forever. *\/\n.js .reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s cubic-bezier(.2,.7,.3,1) }\n.js .reveal.in{ opacity:1; transform:none }\n\n@media (prefers-reduced-motion: reduce){\n  html{ scroll-behavior:auto }\n  *,*::before,*::after{ animation-duration:.001ms !important; transition-duration:.001ms !important }\n  .js .reveal{ opacity:1; transform:none }\n  .board .drop.pre{ transform:none; opacity:1 }\n}\n\n\/* ============================================================\n   WordPress host overrides \u2014 Twenty Twenty-Three, \"blank\" template.\n   The theme wraps page content in .wp-site-blocks > .entry-content\n   with global padding and a constrained max-width, and colours links\n   through :root :where(a), which outranks a bare `a` selector.\n   ============================================================ *\/\nhtml{ background:var(--ink) }\nbody{ background:var(--ink); color:var(--bone); font:400 17px\/1.62 var(--ui) }\n.wp-site-blocks{ padding:0 !important; margin:0 !important; max-width:none !important }\n.entry-content{ padding:0 !important; margin:0 !important; max-width:none !important; background:var(--ink) }\n.entry-content > *{ max-width:none !important; margin-block:0 !important }\n.entry-content :where(a){ color:inherit; text-decoration:none }\n.entry-content :where(p){ margin:0 }\n.entry-content .nav-links a{ color:var(--dim) }\n.entry-content .nav-links a:hover{ color:var(--bone) }\n.entry-content .brand{ color:var(--bone) }\n.entry-content .btn-gold{ color:var(--letter) }\n.entry-content .btn-ghost{ color:var(--bone) }\n.entry-content .duo .card a.link{ color:var(--gold) }\n.entry-content footer a{ color:var(--dim) }\n.entry-content footer a:hover{ color:var(--bone) }\n<\/style>\n<script>document.documentElement.className += \" js\";<\/script>\n<header class=\"nav\">\n  <div class=\"wrap nav-in\">\n    <a class=\"brand\" href=\"#top\">\n      <svg class=\"logo-mark\" viewBox=\"0 0 108 108\" aria-hidden=\"true\"><rect width=\"108\" height=\"108\" rx=\"24\" fill=\"#141A2B\"\/><rect x=\"21\" y=\"26\" width=\"22\" height=\"22\" rx=\"5\" fill=\"#F2E8D8\"\/><rect x=\"45\" y=\"26\" width=\"22\" height=\"22\" rx=\"5\" fill=\"#FFB627\"\/><rect x=\"69\" y=\"26\" width=\"22\" height=\"22\" rx=\"5\" fill=\"#F2E8D8\"\/><rect x=\"45\" y=\"50\" width=\"22\" height=\"22\" rx=\"5\" fill=\"#F2E8D8\"\/><rect x=\"45\" y=\"74\" width=\"22\" height=\"22\" rx=\"5\" fill=\"#F2E8D8\"\/><\/svg>\n      TetraText\n    <\/a>\n    <nav class=\"nav-links\">\n      <a href=\"#play\">How it plays<\/a>\n      <a href=\"#scoring\">Scoring<\/a>\n      <a href=\"#boards\">Boards<\/a>\n      <a href=\"#screens\">Screens<\/a>\n      <a href=\"#community\">Support<\/a>\n    <\/nav>\n    <a class=\"btn btn-gold\" href=\"#get\">Get it free<\/a>\n  <\/div>\n<\/header>\n\n<main id=\"top\">\n\n  <!-- ============ HERO ============ -->\n  <section class=\"hero\">\n    <div class=\"wrap hero-grid\">\n      <div>\n        <h1>Letters fall.<br>You spell your <em>way out<\/em>.<\/h1>\n        <p class=\"lede\">A word game with a falling-block problem underneath it. Tiles drop, you place them, and any word you form across or down clears itself off the board. Rare letters are worth more. Long words are worth a great deal more.<\/p>\n        <div class=\"hero-cta\">\n          <a class=\"badge badge-google\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.expressdevel.tetratext\"><img fetchpriority=\"high\" decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoYAAAD6CAMAAAALK3bYAAAB3VBMVEVHcExXV1deXl5mZmZubm5hYWF4eHiUlJSmpqaNjY1zc3NcXFydnZ2EhISSkpJoaGhJSUkqKioVFRUAAAAfHx9zc3OcnJw0NDR9fX2Hh4c+Pj5TU1NZWVlqamoKCgp9fX1eXl4gICBAQEBwcHAQEBCAgIBgYGAwMDBQUFAHFQoXSiQdXy8nfj4kdDkaVCoQNRqzs7Pm5ubq6ur\/\/\/\/i4uKRkZHd3d3y8vLFxcXs7Oz4+Pjj4+Pu7u7Z2dkqiUQ0qFMxnk4DCwXR0dHz8\/Ofn5\/V1dXv7+\/39\/eIiIgKIBAulEkNKhVra2utra25ubn19fX29vbAwMDp6el6enr09PQUPx\/g4ODw8PAhaTSXl5ckXWPl5eW7u7syZLg6ja\/x8fE6ddZChfQ9krfNzc04pE7JrxNuUwI6pU7WuBP7vATcpQQ\/LwE7pk6tggMfGAE9p05+XgIQDADssQReRwI\/qU69jgOddgNAqU5POwGOagKQkJCgoKDNmQOwsLDQ0NA8qFQvIwE1ply5sDdMgenFeEvKT1nqQzXwcSPobiGwMig5GArOOy9JFRHcPzJ1IhuTKiEPBAM7EQ1YGRSiLiUdCAdLgem\/NytJgOhnHReEJh4sDQpIgOhHgOhFf+dGRnWH0GEdAAAAIHRSTlMAOq\/Z78f6\/\/\/\/9pD\/\/v\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/aub\/\/U59rgoAABDaSURBVHgB7NhVYutAEEXBkUk3McqCMOx\/k48ZQ+OvqjWcge4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+gmc0XX8By1pSTW67a\/ATOztflhJpFG\/iDdl5OZb4J\/EU7K6fQbPPJbn\/oumMPHwxddxinfHLelOrWbT7adz384uIyH5011Svc5IPx2MMfdFf5oF2foMLpuoe\/uKl\/HzZtkmno4a+6KclZqWirQv5rmJKcl2rmKuQJLvLBrFTSbJJc9zyB\/+G2VLJIMvbwX7uK12Gb5NjDf3X1rsNlkn0PT3CV5LbUsErS9fAE10nuar3Jux6e4j7JQ6mg8SbzdFfJplQwS3Lo4UkekzSVdtddD09yU2lls5AhT9fJEBmCDJEhyBAZggyRIbxn376WWtehMI7fnvv1BBJyoaN8NJ9o43SH3nuH93+HgxmQo8TE7Bm8TtP\/zoxmaZcfLVLe8gy\/TEg5I6WikQI3SSSD8SQVhW\/PVLHIFsk4lJKc8rXh2EBBPHmGs3PzCwuLS8v0tyVXdAN5q3rk\/13DaY1oDeMFVLQObNC0RTa5qRMA+FM3Q0XOhkaS7RewIYkjz3B5K\/2otdSmvyPRMSjq9pRl9dsMzXcYRv0ERSYeHQA0HYaGg6Fn2F5IR2rNEX9hArd+VCvDcACnwYrjPhtyM\/QMt1up284uMbe3AQANHby1ot8fkoKVLBJEQr63D2DfftBlWLWI\/nhXn\/wKgpngQGcADtfVqPtE8DL0DGdb6USLs8RZeATArIjPxybQjRxWk60BWCM3u75i0V6ucNCz+xkAOLYDcpYdz5CX4VZaFuePiOIEQDcmm1rJIqqPYZTAtaXWAWycfg7QCXAWe4acDM\/T8lrnxFUHwCByZVKNDPP9Tpz91EX+IfXJcJgBRnmGjAx30q9a2CWWhAEuT8mtRoaRATZmSr4gDz8GNFQTQM8z5GO4nE7pqk0MXQNIiI9hr2y\/IQBtB0iT4\/MM2RjepNNqLVH9rQM4ZWSogcOJ\/cQtcCvsgDsATc+QjeH9Qzq1nWWquxMgiaYxDGzyJxiulu5ngEzaAeoRyIaeIRfDp+cKh+nCLNVbA9ClZ8jhxMvXwQ8wtPu59fPxxYDTSyARniETw+fnSofpfJvqzIyy2EDRSS0M3f2cX5+HIwNylh0+hp7h80taUWuO7auhQZH+G78aUjQAzmI+hp5htcN0a5fpZ8NskqGRNsH0s2Fe7xAwio+hZ1jtMD\/fY\/lNWX4UN4CTv+035TylAfQYGXqG1Q7t+R7T64ZhBvz62143fC8e5AJ5GHqG33e4c853itIBcM1+iuIOOAbQ7DMy9Axzh9UtbDOdKc9cAkbwniknwg4obGbgY+gZVju053sMN2wo3ABwzHvD5nI4MeD0EjjjY+gZft9ha6n2+4bieJA\/i\/ruGw5K7hu+lgy4AMDL0DOsdmgvZ9d5+\/paNwCgG1kVQZH8EYbF7eu3NnUGAOuqZEA0YGfoGboOWc\/3wgRu5ov3ovwAw7L3opwdq9IBvUN2hp6h65D1fM99Z15jRVGtDMffmRd+MUAZfoaeYblDnsvZct\/cIk\/ra0Gfmd9nmFUzzJMHpe9TNs4AijeAjJmhZ+g65D7fE1LGUioHi5so1tonp0hKSVWLisXx6HK74fizItY8Q9dhRVezf7FzF0YMAzEABItQBz+UvoJmpu7DjJrIwbsa1vAo1EswfNzh+654+OVgqHdovzmbYKh3aL++RzDUO+xpfY9gqHQ4Gk\/EMoKh3uF05nl+IGYRDPUOw4XCRVEsNhEM9Q6TmbcpzYSMg+HCoUbhorwQsgqGCoflzDusCoRsg+HCoU7hopovs0UwVDhsZt5ZeSpkGgwXDpUKF\/mtkGUwXDjUKlxUxUKGwXDhUK1wUZcZ7D0cLC\/1cg4lMLzs8LLCw\/Kn1vfcnL37SHMet9YAvIizApAInGMlmACTe21PnHO2iZ907PDnnMNWnSp9pA6kwyrqeQolfhO7u6H8CoE6QPXBXyVmq+m0szFEh7xCPveue\/FG5eR3MnR0G6Lg5MXlMVysK7ZTG0PGoUQh5s90jTTB84m3AWLjzxLoOvF80mD5ds3GkHOICiX5Ay2NGnw5QdXOsJhoN4Zih6jwKA7b5PcltbUzLGd0G0ORQ1QozaJLiHrwh5J1\/QxLsRtDsUNUKMhPligc\/eGM+s4y9HZjKHaICgWRF9245CcJvbFNZ0xIHtPdXYbebgylDlGhID8nYdRE29BpANon\/KTuLkPvNoYyh6hQlOuMyFnRNNokUFg9Q+SluwxTjo2hyOFfUKEofyVRArNmxOgBFdbPEKNGfxG7MRQ4\/Nvff7w0st9SWugKiY\/lFdbLEJL9eeLG8HD+8c8fH4eh84LJn7N0VxnSCLPDjeEBhV99\/c2PjzIoB16hPHUzhO9hvzE8rPDr5Q5JkM7Dp3CCDGFYDhtDgcLFDu+RINHDh3CKDOGbuDEUKFzs8AcLPluf1Mky1BtDscLlDn8jqcIe\/HkMnSxD2hiKFS53+Cviw3YESW8MN4YChUsd\/p4EsSusT5Ttw38zmIb2xLVnzXLrqBzdmfDfmE7M0LWZv4mUoSszhJc4ep\/gNZ4KQ16h2OE9wZAM124VXS\/ajv4qKReIaROhWezV4T0IyWiicJaeYcjcceqVmCFz\/T4W2tngISmri9uF8yiaJ5xnqJ8hr1Do8PcChbBOHul6aZOkTFubJCle1NlPkjoCeSzD+R0nI2XIvAkD286Nfp5eT3tRUxxkcv0MeYUSh\/LjG242JqvRM2lpFoc9IRibpUt+HltmWHr8US9laC4fjWtnPZPoJlf+Y\/EnAVU\/Q16hwKH8MJvmRpWELonKtK3nY\/ihkQvPkH\/8US1j2PiLaKZd79kkh69s\/vYpfN71M0SFcoe\/\/ytJ0+wZqhpTykWD5AsZBQrnI1bvxQwZhZhRyxliH5yZdtyTB4c4nHOvpamdIa9Q4FB+ig2OR+X\/xqThFfDArC+n5ZvJGOpYbi1mqLK\/jNptp5Lf+1Vr+cE34WBdO0NUKHX4Gzj29bgMJwoGY0w\/csDwg0z\/bZbxdg1T5uNjNsaEgwwHXHnbpusjDvdFhtlcZvqUe4YrIA3GWJPTtBxJJ25ubbFJ7QxRodThH35BdHyGdjqIJqPPLQW\/89Ng2N0O3I1X\/07Pi618OKepTZnhdEqXLJ3FJnx0nmExI9drtpejrpo\/ho\/oNHELlKTrZwgKBQ7hvNfjMzQ4C\/ej5obWvPMvNHfXZt7MMCsglmHAx5\/fIi9mGDU\/eHfzynM94rpEMR2fwv61coaoUOZQfvo1w0YtZZg5hTi4qmkvl\/nHTbMyH8usxFmGDT5++fVIGY6qOIdUfRoIoiMqG+BJzRcoqnqGqFDmsDwplK+U5Qw19iKYdtIVOHSEyRN3HY+VujLDzAx8LsNEbxHDQe9bymjNPit8UmguwoupmyGvkHd4k7+MokDWormhLfrFS7rljkEnvNQxoClMKDJMO4vt6a+KSxjG7vCKujMmhGysg8ee9Pd5rtQ3tTOUKASH8nPkih\/OILluOF69vxkn9nwP5vAzKiJPaMrwd8YwdDO4qk9+EidmGK2m\/QyViZPfwwMytPOv0ABvTdUMeYVsvr3JqZo40dcLGjdXvtryL7R27y9oCry48mQqcQzB5wDrCKDSallvGINBryxDlf0sCRlSgtfLLFqqZShRCA5vdMZwu+RNg7cfEJWKdgxMnGg30LV25f5jKDA0ME01UXIqqGioZNrZ5EuZ9uvj9B8jVcoQFMpz\/wHdILCGkLeNRFpwoScjHA7YJSRTnhmYAwy7JnsI1HqtxLD35cwqh91kMDDVMlyu8OEjumGifELdo68yQ6iK2cfQ7DI0coYX+KKfJFiCrMDQ+D2Zdf95MjXWlTJcrvDxExJGMCqPYrH2FjH0TM3tigwbL2CoUN4AJmtkuFzh02d08+jElwmWeXl9rEE5LxuUmWXJ2gwD3P3ZDZt2nDKEVi2QdFUyXK7w\/nNaI\/CBOpnXgVZdonREttwhZyHDDLrWY+jYE5ebOHtV3dWkuYXnWC1DucKHL2il6CTbnDdM1tRx2QUbt\/eCTVOeT8XiBRtINIroGAwNf6OEDPElN5f\/r6uYoVjh4yfPaLW05XrR8rlXq12+9vjRW\/7HRoahgmVJR5BVGQbm6XN9vPVnGRp4k2plKFb48hWtGJwAubJCpHKsH\/Mi3wUzDCmWarqUXp9hx78Xu68GZom1MnwtVPjmOa0blQ791QkdpiVX65Y2AGrDd4YMw76wDUSPsVmdYcM+KV\/cwZB0tQyFCh+\/oNXTHdjfacGpQ0cIjC\/0irJCr7S40EvNnxH0n71emWHLPilgqJg9EFUyFCpcc1KIKsqLTm0jc15+qew1LS97nf6LVlr2mucOoduOzToMmWoyeFJ+0rtjVK0MZQrvv6LjxHpMzPbso9VNO3hMz41DyepzmoNoE0ATdmueI7MJIPl9DFWab0LAb0G\/AkN4WyK3MwEZNh4yUKUM30oUPnxOR4v1kuRpETLudbKFLVEuIW\/TmZ7dEoUf49gba4Z0aEtUix+8aac3yasw1Anqu4wxg5+EIAFfVaUMJQofv6NjpkueC98XrrVB1EiKbEsMafDFjHoFhgefVeF7HKlOhhKF75\/RceNGvz\/JzuXKFAi3y+fFDPUoU3gDhjoKGeK0wtbJUKDw\/gc6fowX\/JVNTHOzw0N6miQvZUg6FBWuw5Dv8ofAMTR4taZChh+\/kpVzHT+qLCEZ+VFKZoer7Cglu\/goJeoL34J1GPIOR80y1Alefn0MP321QjnXehATj1DLD5Zz3MFyIisqLDxYDlfduKhdkSHpYWcTH8tQ+fOo6hiCQlk51\/Gj7TA3mDsqR7ejpNJFmSgpkW4GfFxNE4YOztzEm8jqXsN5HGEk7fARxo6I+nCWQlFwdQy\/BwrF5VzHT9P24SyDsY4ORbV9EJz669osOJtY2\/7MWofHvGUSnFMcequO9d00\/HHJzJjc1Mfw\/z9\/JS\/nOsXoav5MgYF+uzaGX76Sl3OdZBq4Gn6Lg1WWFTJ8JC\/nOoE0gy7twmrolsfCpevqGNJDWTnXCUS30fu+1MdU0xmaKhm+KJdznVRcTtxmgba2P+fndZUM6U25nOuUktjiQZcqmRrCboE6Gb56zJdznViMZxy6BH3MLQ5euq6UIX14zJdznVSwosqoizO6oATidgf+IHOtDOnZfb6c61TC7EOYHY6equkMu9oYYl682a4UUvbF2FqmFJHqY4j58O7p\/fsvn3CFNJvDXM2Moq2TIWZLrlQhnve6Maw\/hi9erObSdU93geEWF5jixWo6Q682hvWHKR4cGqognTmLpTvDcIvuzBD+k2yaf7dbVwmOAzEQQDvgcU3YMQzD\/S+5zEydpfcOoC9JVf3\/wRpiDcEaYg3BGv4HrOHi29cQbiqt4fzZ3EPPN+Exyaz8erMk+\/6bwFWyKTW0ya7\/FnCf5KHUcPat5RCuk9yVGppvTWW4SnJbqmiTHPuvgi7JttSxTDL2XwW7JPNSx2yT5Lr\/CrhJsi21LJJMQ\/9FcJFn5qWa7Vf3EIYpyarUM2u\/sofQTUnOS03rTZLpuv8C9MKcz0r9Pcx47D8Buqs8065LZes2z+27Hj5wcZn6v\/Cl2TYv7PaHrjv28MzQdYdxygurWTmFxSbwGe28nMhs2QY+oV2UU2rO2sB7zlfrcnKz+WIJrzTzWQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3noK1lrK6lVlJMwAAAAASUVORK5CYII=\" alt=\"Get it on Google Play\" width=\"646\" height=\"250\"><\/a>\n          <a class=\"badge badge-apple\" href=\"https:\/\/apple.co\/47AALxp\"><img decoding=\"async\" src=\"data:image\/svg+xml;base64,PHN2ZyBpZD0ibGl2ZXR5cGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjExOS42NjQwNyIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDExOS42NjQwNyA0MCI+CiAgPHRpdGxlPkRvd25sb2FkX29uX3RoZV9BcHBfU3RvcmVfQmFkZ2VfVVMtVUtfUkdCX2Jsa180U1ZHXzA5MjkxNzwvdGl0bGU+CiAgPGc+CiAgICA8Zz4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTExMC4xMzQ3NywwSDkuNTM0NjhjLS4zNjY3LDAtLjcyOSwwLTEuMDk0NzMuMDAyLS4zMDYxNS4wMDItLjYwOTg2LjAwNzgxLS45MTg5NS4wMTI3QTEzLjIxNDc2LDEzLjIxNDc2LDAsMCwwLDUuNTE3MS4xOTE0MWE2LjY2NTA5LDYuNjY1MDksMCwwLDAtMS45MDA4OC42MjdBNi40Mzc3OSw2LjQzNzc5LDAsMCwwLDEuOTk3NTcsMS45OTcwNyw2LjI1ODQ0LDYuMjU4NDQsMCwwLDAsLjgxOTM1LDMuNjE4MTZhNi42MDExOSw2LjYwMTE5LDAsMCwwLS42MjUsMS45MDMzMiwxMi45OTMsMTIuOTkzLDAsMCwwLS4xNzkyLDIuMDAyQy4wMDU4Nyw3LjgzMDA4LjAwNDg5LDguMTM3NywwLDguNDQ0MzRWMzEuNTU4NmMuMDA0ODkuMzEwNS4wMDU4Ny42MTEzLjAxNTE1LjkyMTlhMTIuOTkyMzIsMTIuOTkyMzIsMCwwLDAsLjE3OTIsMi4wMDE5LDYuNTg3NTYsNi41ODc1NiwwLDAsMCwuNjI1LDEuOTA0M0E2LjIwNzc4LDYuMjA3NzgsMCwwLDAsMS45OTc1NywzOC4wMDFhNi4yNzQ0NSw2LjI3NDQ1LDAsMCwwLDEuNjE4NjUsMS4xNzg3LDYuNzAwODIsNi43MDA4MiwwLDAsMCwxLjkwMDg4LjYzMDgsMTMuNDU1MTQsMTMuNDU1MTQsMCwwLDAsMi4wMDM5LjE3NjhjLjMwOTA5LjAwNjguNjEyOC4wMTA3LjkxODk1LjAxMDdDOC44MDU2Nyw0MCw5LjE2OCw0MCw5LjUzNDY4LDQwSDExMC4xMzQ3N2MuMzU5NCwwLC43MjQ2LDAsMS4wODQtLjAwMi4zMDQ3LDAsLjYxNzItLjAwMzkuOTIxOS0uMDEwN2ExMy4yNzksMTMuMjc5LDAsMCwwLDItLjE3NjgsNi44MDQzMiw2LjgwNDMyLDAsMCwwLDEuOTA4Mi0uNjMwOCw2LjI3NzQyLDYuMjc3NDIsMCwwLDAsMS42MTcyLTEuMTc4Nyw2LjM5NDgyLDYuMzk0ODIsMCwwLDAsMS4xODE2LTEuNjE0Myw2LjYwNDEzLDYuNjA0MTMsMCwwLDAsLjYxOTEtMS45MDQzLDEzLjUwNjQzLDEzLjUwNjQzLDAsMCwwLC4xODU2LTIuMDAxOWMuMDAzOS0uMzEwNi4wMDM5LS42MTE0LjAwMzktLjkyMTkuMDA3OC0uMzYzMy4wMDc4LS43MjQ2LjAwNzgtMS4wOTM4VjkuNTM2MTNjMC0uMzY2MjEsMC0uNzI5NDktLjAwNzgtMS4wOTE3OSwwLS4zMDY2NCwwLS42MTQyNi0uMDAzOS0uOTIwOWExMy41MDcxLDEzLjUwNzEsMCwwLDAtLjE4NTYtMi4wMDIsNi42MTc3LDYuNjE3NywwLDAsMC0uNjE5MS0xLjkwMzMyLDYuNDY2MTksNi40NjYxOSwwLDAsMC0yLjc5ODgtMi43OTk4LDYuNzY3NTQsNi43Njc1NCwwLDAsMC0xLjkwODItLjYyNywxMy4wNDM5NCwxMy4wNDM5NCwwLDAsMC0yLS4xNzY3NmMtLjMwNDctLjAwNDg4LS42MTcyLS4wMTA3NC0uOTIxOS0uMDEyNjktLjM1OTQtLjAwMi0uNzI0Ni0uMDAyLTEuMDg0LS4wMDJaIiBzdHlsZT0iZmlsbDogI2E2YTZhNiIvPgogICAgICAgIDxwYXRoIGQ9Ik04LjQ0NDgzLDM5LjEyNWMtLjMwNDY4LDAtLjYwMi0uMDAzOS0uOTA0MjktLjAxMDdhMTIuNjg3MTQsMTIuNjg3MTQsMCwwLDEtMS44NjkxNC0uMTYzMSw1Ljg4MzgxLDUuODgzODEsMCwwLDEtMS42NTY3NC0uNTQ3OSw1LjQwNTczLDUuNDA1NzMsMCwwLDEtMS4zOTctMS4wMTY2LDUuMzIwODIsNS4zMjA4MiwwLDAsMS0xLjAyMDUxLTEuMzk2NSw1LjcyMTg2LDUuNzIxODYsMCwwLDEtLjU0My0xLjY1NzIsMTIuNDEzNTEsMTIuNDEzNTEsMCwwLDEtLjE2NjUtMS44NzVjLS4wMDYzNC0uMjEwOS0uMDE0NjQtLjkxMzEtLjAxNDY0LS45MTMxVjguNDQ0MzRTLjg4MTg1LDcuNzUyOTMuODg3Nyw3LjU0OThhMTIuMzcwMzksMTIuMzcwMzksMCwwLDEsLjE2NTUzLTEuODcyMDcsNS43NTU1LDUuNzU1NSwwLDAsMSwuNTQzNDYtMS42NjIxQTUuMzczNDksNS4zNzM0OSwwLDAsMSwyLjYxMTgzLDIuNjE3NjgsNS41NjU0Myw1LjU2NTQzLDAsMCwxLDQuMDE0MTcsMS41OTUyMWE1LjgyMzA5LDUuODIzMDksMCwwLDEsMS42NTMzMi0uNTQzOTRBMTIuNTg1ODksMTIuNTg1ODksMCwwLDEsNy41NDMuODg3MjFMOC40NDUzMi44NzVIMTExLjIxMzg3bC45MTMxLjAxMjdhMTIuMzg0OTMsMTIuMzg0OTMsMCwwLDEsMS44NTg0LjE2MjU5LDUuOTM4MzMsNS45MzgzMywwLDAsMSwxLjY3MDkuNTQ3ODUsNS41OTM3NCw1LjU5Mzc0LDAsMCwxLDIuNDE1LDIuNDE5OTMsNS43NjI2Nyw1Ljc2MjY3LDAsMCwxLC41MzUyLDEuNjQ4OTIsMTIuOTk1LDEyLjk5NSwwLDAsMSwuMTczOCwxLjg4NzIxYy4wMDI5LjI4MzIuMDAyOS41ODc0LjAwMjkuODkwMTQuMDA3OS4zNzUuMDA3OS43MzE5My4wMDc5LDEuMDkxNzlWMzAuNDY0OGMwLC4zNjMzLDAsLjcxNzgtLjAwNzksMS4wNzUyLDAsLjMyNTIsMCwuNjIzMS0uMDAzOS45Mjk3YTEyLjczMTI2LDEyLjczMTI2LDAsMCwxLS4xNzA5LDEuODUzNSw1LjczOSw1LjczOSwwLDAsMS0uNTQsMS42Nyw1LjQ4MDI5LDUuNDgwMjksMCwwLDEtMS4wMTU2LDEuMzg1Nyw1LjQxMjksNS40MTI5LDAsMCwxLTEuMzk5NCwxLjAyMjUsNS44NjE2OCw1Ljg2MTY4LDAsMCwxLTEuNjY4LjU0OTgsMTIuNTQyMTgsMTIuNTQyMTgsMCwwLDEtMS44NjkyLjE2MzFjLS4yOTI5LjAwNjgtLjU5OTYuMDEwNy0uODk3NC4wMTA3bC0xLjA4NC4wMDJaIi8+CiAgICAgIDwvZz4KICAgICAgPGcgaWQ9Il9Hcm91cF8iIGRhdGEtbmFtZT0iJmx0O0dyb3VwJmd0OyI+CiAgICAgICAgPGcgaWQ9Il9Hcm91cF8yIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgPGcgaWQ9Il9Hcm91cF8zIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgICA8cGF0aCBpZD0iX1BhdGhfIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgZD0iTTI0Ljc2ODg4LDIwLjMwMDY4YTQuOTQ4ODEsNC45NDg4MSwwLDAsMSwyLjM1NjU2LTQuMTUyMDYsNS4wNjU2Niw1LjA2NTY2LDAsMCwwLTMuOTkxMTYtMi4xNTc2OGMtMS42NzkyNC0uMTc2MjYtMy4zMDcxOSwxLjAwNDgzLTQuMTYyOSwxLjAwNDgzLS44NzIyNywwLTIuMTg5NzctLjk4NzMzLTMuNjA4NS0uOTU4MTRhNS4zMTUyOSw1LjMxNTI5LDAsMCwwLTQuNDcyOTIsMi43Mjc4N2MtMS45MzQsMy4zNDg0Mi0uNDkxNDEsOC4yNjk0NywxLjM2MTIsMTAuOTc2MDguOTI2OSwxLjMyNTM1LDIuMDEwMTgsMi44MDU4LDMuNDI3NjMsMi43NTMzLDEuMzg3MDYtLjA1NzUzLDEuOTA1MS0uODg0NDgsMy41Nzk0LS44ODQ0OCwxLjY1ODc2LDAsMi4xNDQ3OS44ODQ0OCwzLjU5MS44NTExLDEuNDg4MzgtLjAyNDE2LDIuNDI2MTMtMS4zMzEyNCwzLjMyMDUxLTIuNjY5MTRhMTAuOTYyLDEwLjk2MiwwLDAsMCwxLjUxODQyLTMuMDkyNTFBNC43ODIwNSw0Ljc4MjA1LDAsMCwxLDI0Ljc2ODg4LDIwLjMwMDY4WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgICAgPHBhdGggaWQ9Il9QYXRoXzIiIGRhdGEtbmFtZT0iJmx0O1BhdGgmZ3Q7IiBkPSJNMjIuMDM3MjUsMTIuMjEwODlhNC44NzI0OCw0Ljg3MjQ4LDAsMCwwLDEuMTE0NTItMy40OTA2Miw0Ljk1NzQ2LDQuOTU3NDYsMCwwLDAtMy4yMDc1OCwxLjY1OTYxLDQuNjM2MzQsNC42MzYzNCwwLDAsMC0xLjE0MzcxLDMuMzYxMzlBNC4wOTkwNSw0LjA5OTA1LDAsMCwwLDIyLjAzNzI1LDEyLjIxMDg5WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPGc+CiAgICAgICAgICA8cGF0aCBkPSJNNDIuMzAyMjcsMjcuMTM5NjVoLTQuNzMzNGwtMS4xMzY3MiwzLjM1NjQ1SDM0LjQyNzI3bDQuNDgzNC0xMi40MThoMi4wODNsNC40ODM0LDEyLjQxOEg0My40MzhaTTM4LjA1OTEsMjUuNTkwODJoMy43NTJsLTEuODQ5NjEtNS40NDcyN2gtLjA1MTc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik01NS4xNTk2OSwyNS45Njk3M2MwLDIuODEzNDgtMS41MDU4Niw0LjYyMTA5LTMuNzc4MzIsNC42MjEwOWEzLjA2OTMsMy4wNjkzLDAsMCwxLTIuODQ4NjMtMS41ODRoLS4wNDN2NC40ODQzOGgtMS44NTg0VjIxLjQ0MjM4SDQ4LjQzMDJ2MS41MDU4NmguMDM0MThhMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDIuODgyODEtMS42MDA1OUM1My42NDUsMjEuMzQ3NjYsNTUuMTU5NjksMjMuMTY0MDYsNTUuMTU5NjksMjUuOTY5NzNabS0xLjkxMDE2LDBjMC0xLjgzMy0uOTQ3MjctMy4wMzgwOS0yLjM5MjU4LTMuMDM4MDktMS40MTk5MiwwLTIuMzc1LDEuMjMwNDctMi4zNzUsMy4wMzgwOSwwLDEuODI0MjIuOTU1MDgsMy4wNDU5LDIuMzc1LDMuMDQ1OUM1Mi4zMDIyNywyOS4wMTU2Myw1My4yNDk1MywyNy44MTkzNCw1My4yNDk1MywyNS45Njk3M1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNNjUuMTI0NTMsMjUuOTY5NzNjMCwyLjgxMzQ4LTEuNTA1ODYsNC42MjEwOS0zLjc3ODMyLDQuNjIxMDlhMy4wNjkzLDMuMDY5MywwLDAsMS0yLjg0ODYzLTEuNTg0aC0uMDQzdjQuNDg0MzhoLTEuODU4NFYyMS40NDIzOEg1OC4zOTV2MS41MDU4NmguMDM0MThBMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDYxLjMxMiwyMS4zNDc2NkM2My42MDk4OCwyMS4zNDc2Niw2NS4xMjQ1MywyMy4xNjQwNiw2NS4xMjQ1MywyNS45Njk3M1ptLTEuOTEwMTYsMGMwLTEuODMzLS45NDcyNy0zLjAzODA5LTIuMzkyNTgtMy4wMzgwOS0xLjQxOTkyLDAtMi4zNzUsMS4yMzA0Ny0yLjM3NSwzLjAzODA5LDAsMS44MjQyMi45NTUwOCwzLjA0NTksMi4zNzUsMy4wNDU5QzYyLjI2NzExLDI5LjAxNTYzLDYzLjIxNDM4LDI3LjgxOTM0LDYzLjIxNDM4LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik03MS43MTA0NywyNy4wMzYxM2MuMTM3NywxLjIzMTQ1LDEuMzM0LDIuMDQsMi45Njg3NSwyLjA0LDEuNTY2NDEsMCwyLjY5MzM2LS44MDg1OSwyLjY5MzM2LTEuOTE4OTUsMC0uOTYzODctLjY3OTY5LTEuNTQxLTIuMjg5MDYtMS45MzY1MmwtMS42MDkzNy0uMzg3N2MtMi4yODAyNy0uNTUwNzgtMy4zMzg4Ny0xLjYxNzE5LTMuMzM4ODctMy4zNDc2NiwwLTIuMTQyNTgsMS44NjcxOS0zLjYxNDI2LDQuNTE4NTUtMy42MTQyNiwyLjYyNCwwLDQuNDIyODUsMS40NzE2OCw0LjQ4MzQsMy42MTQyNmgtMS44NzZjLS4xMTIzLTEuMjM5MjYtMS4xMzY3Mi0xLjk4NzMtMi42MzM3OS0xLjk4NzNzLTIuNTIxNDguNzU2ODQtMi41MjE0OCwxLjg1ODRjMCwuODc3OTMuNjU0MywxLjM5NDUzLDIuMjU0ODgsMS43OWwxLjM2ODE2LjMzNTk0YzIuNTQ3ODUuNjAyNTQsMy42MDY0NSwxLjYyNiwzLjYwNjQ1LDMuNDQyMzgsMCwyLjMyMzI0LTEuODUwNTksMy43NzgzMi00Ljc5Mzk1LDMuNzc4MzItMi43NTM5MSwwLTQuNjEzMjgtMS40MjA5LTQuNzMzNC0zLjY2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODMuMzQ2MjEsMTkuMjk5OHYyLjE0MjU4aDEuNzIxNjh2MS40NzE2OEg4My4zNDYyMXY0Ljk5MTIxYzAsLjc3NTM5LjM0NDczLDEuMTM2NzIsMS4xMDE1NiwxLjEzNjcyYTUuODA3NTIsNS44MDc1MiwwLDAsMCwuNjExMzMtLjA0M3YxLjQ2Mjg5YTUuMTAzNTEsNS4xMDM1MSwwLDAsMS0xLjAzMjIzLjA4NTk0Yy0xLjgzMywwLTIuNTQ3ODUtLjY4ODQ4LTIuNTQ3ODUtMi40NDQzNFYyMi45MTQwNkg4MC4xNjI2MlYyMS40NDIzOEg4MS40NzlWMTkuMjk5OFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODYuMDY1LDI1Ljk2OTczYzAtMi44NDg2MywxLjY3NzczLTQuNjM4NjcsNC4yOTM5NS00LjYzODY3LDIuNjI1LDAsNC4yOTQ5MiwxLjc5LDQuMjk0OTIsNC42Mzg2NywwLDIuODU2NDUtMS42NjExMyw0LjYzODY3LTQuMjk0OTIsNC42Mzg2N0M4Ny43MjYwOSwzMC42MDg0LDg2LjA2NSwyOC44MjYxNyw4Ni4wNjUsMjUuOTY5NzNabTYuNjk1MzEsMGMwLTEuOTU0MS0uODk1NTEtMy4xMDc0Mi0yLjQwMTM3LTMuMTA3NDJzLTIuNDAwMzksMS4xNjIxMS0yLjQwMDM5LDMuMTA3NDJjMCwxLjk2MTkxLjg5NDUzLDMuMTA2NDUsMi40MDAzOSwzLjEwNjQ1UzkyLjc2MDI3LDI3LjkzMTY0LDkyLjc2MDI3LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik05Ni4xODYwNiwyMS40NDIzOGgxLjc3MjQ2djEuNTQxaC4wNDNhMi4xNTk0LDIuMTU5NCwwLDAsMSwyLjE3NzczLTEuNjM1NzQsMi44NjYxNiwyLjg2NjE2LDAsMCwxLC42MzY3Mi4wNjkzNHYxLjczODI4YTIuNTk3OTQsMi41OTc5NCwwLDAsMC0uODM1LS4xMTIzLDEuODcyNjQsMS44NzI2NCwwLDAsMC0xLjkzNjUyLDIuMDgzdjUuMzcwMTJoLTEuODU4NFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNMTA5LjM4NDMsMjcuODM2OTFjLS4yNSwxLjY0MzU1LTEuODUwNTksMi43NzE0OC0zLjg5ODQ0LDIuNzcxNDgtMi42MzM3OSwwLTQuMjY4NTUtMS43NjQ2NS00LjI2ODU1LTQuNTk1NywwLTIuODM5ODQsMS42NDM1NS00LjY4MTY0LDQuMTkwNDMtNC42ODE2NCwyLjUwNDg4LDAsNC4wODAwOCwxLjcyMDcsNC4wODAwOCw0LjQ2NTgydi42MzY3MmgtNi4zOTQ1M3YuMTEyM2EyLjM1OCwyLjM1OCwwLDAsMCwyLjQzNTU1LDIuNTY0NDUsMi4wNDgzNCwyLjA0ODM0LDAsMCwwLDIuMDkwODItMS4yNzM0NFptLTYuMjgyMjMtMi43MDIxNWg0LjUyNjM3YTIuMTc3MywyLjE3NzMsMCwwLDAtMi4yMjA3LTIuMjk3ODVBMi4yOTIsMi4yOTIsMCwwLDAsMTAzLjEwMjA3LDI1LjEzNDc3WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJfR3JvdXBfNCIgZGF0YS1uYW1lPSImbHQ7R3JvdXAmZ3Q7Ij4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTM3LjgyNjE5LDguNzMxYTIuNjM5NjQsMi42Mzk2NCwwLDAsMSwyLjgwNzYyLDIuOTY0ODRjMCwxLjkwNjI1LTEuMDMwMjcsMy4wMDItMi44MDc2MiwzLjAwMkgzNS42NzA5MlY4LjczMVptLTEuMjI4NTIsNS4xMjNoMS4xMjVhMS44NzU4OCwxLjg3NTg4LDAsMCwwLDEuOTY3NzctMi4xNDYsMS44ODEsMS44ODEsMCwwLDAtMS45Njc3Ny0yLjEzMzc5aC0xLjEyNVoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTQxLjY4MDY4LDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDNDQuNTc1MjIsMTMuOTk0NjMsNDUuMDEzNjksMTMuNDI0MzIsNDUuMDEzNjksMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01MS41NzMyNiwxNC42OTc3NWgtLjkyMTg3bC0uOTMwNjYtMy4zMTY0MWgtLjA3MDMxbC0uOTI2NzYsMy4zMTY0MWgtLjkxMzA5bC0xLjI0MTIxLTQuNTAyOTNoLjkwMTM3bC44MDY2NCwzLjQzNmguMDY2NDFsLjkyNTc4LTMuNDM2aC44NTI1NGwuOTI1NzgsMy40MzZoLjA3MDMxbC44MDI3My0zLjQzNmguODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01My44NTM1NCwxMC4xOTQ4Mkg1NC43MDl2LjcxNTMzaC4wNjY0MWExLjM0OCwxLjM0OCwwLDAsMSwxLjM0Mzc1LS44MDIyNSwxLjQ2NDU2LDEuNDY0NTYsMCwwLDEsMS41NTg1OSwxLjY3NDh2Mi45MTVoLS44ODg2N1YxMi4wMDU4NmMwLS43MjM2My0uMzE0NDUtMS4wODM1LS45NzE2OC0xLjA4MzVhMS4wMzI5NCwxLjAzMjk0LDAsMCwwLTEuMDc1MiwxLjE0MTExdjIuNjM0MjhoLS44ODg2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTU5LjA5Mzc3LDguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02MS4yMTc3OSwxMi40NDQzNGEyLjEzMzQ2LDIuMTMzNDYsMCwxLDEsNC4yNDc1NiwwLDIuMTMzOCwyLjEzMzgsMCwxLDEtNC4yNDc1NiwwWm0zLjMzMywwYzAtLjk3NjA3LS40Mzg0OC0xLjU0Njg3LTEuMjA4LTEuNTQ2ODctLjc3MjQ2LDAtMS4yMDcuNTcwOC0xLjIwNywxLjU0Njg4LDAsLjk4Mzg5LjQzNDU3LDEuNTUwMjksMS4yMDcsMS41NTAyOUM2NC4xMTIzMiwxMy45OTQ2Myw2NC41NTA4LDEzLjQyNDMyLDY0LjU1MDgsMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02Ni40MDA5LDEzLjQyNDMyYzAtLjgxMDU1LjYwMzUyLTEuMjc3ODMsMS42NzQ4LTEuMzQ0MjRsMS4yMTk3My0uMDcwMzF2LS4zODg2N2MwLS40NzU1OS0uMzE0NDUtLjc0NDE0LS45MjE4Ny0uNzQ0MTQtLjQ5NjA5LDAtLjgzOTg0LjE4MjEzLS45Mzg0OC41MDA0OWgtLjg2MDM1Yy4wOTA4Mi0uNzczNDQuODE4MzYtMS4yNjk1MywxLjgzOTg0LTEuMjY5NTMsMS4xMjg5MSwwLDEuNzY1NjMuNTYyLDEuNzY1NjMsMS41MTMxOHYzLjA3NjY2aC0uODU1NDd2LS42MzI4MWgtLjA3MDMxYTEuNTE1LDEuNTE1LDAsMCwxLTEuMzUyNTQuNzA3QTEuMzYwMjYsMS4zNjAyNiwwLDAsMSw2Ni40MDA5LDEzLjQyNDMyWm0yLjg5NDUzLS4zODQ3N3YtLjM3NjQ2bC0xLjA5OTYxLjA3MDMxYy0uNjIwMTIuMDQxNS0uOTAxMzcuMjUyNDQtLjkwMTM3LjY0OTQxLDAsLjQwNTI3LjM1MTU2LjY0MTExLjgzNS42NDExMUExLjA2MTUsMS4wNjE1LDAsMCwwLDY5LjI5NTQzLDEzLjAzOTU1WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8cGF0aCBkPSJNNzEuMzQ4MTYsMTIuNDQ0MzRjMC0xLjQyMjg1LjczMTQ1LTIuMzI0MjIsMS44NjkxNC0yLjMyNDIyYTEuNDg0LDEuNDg0LDAsMCwxLDEuMzgwODYuNzloLjA2NjQxVjguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODUxNTZ2LS43MTE0M2gtLjA3MDMxYTEuNTYyODQsMS41NjI4NCwwLDAsMS0xLjQxNDA2Ljc4NTY0QzcyLjA3MTgsMTQuNzcyLDcxLjM0ODE2LDEzLjg3MDYxLDcxLjM0ODE2LDEyLjQ0NDM0Wm0uOTE4LDBjMCwuOTU1MDguNDUwMiwxLjUyOTc5LDEuMjAzMTMsMS41Mjk3OS43NDksMCwxLjIxMTkxLS41ODMsMS4yMTE5MS0xLjUyNTg4LDAtLjkzODQ4LS40Njc3Ny0xLjUyOTc5LTEuMjExOTEtMS41Mjk3OUM3Mi43MjEyMSwxMC45MTg0Niw3Mi4yNjYxMywxMS40OTcwNyw3Mi4yNjYxMywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTc5LjIzLDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDODIuMTI0NTMsMTMuOTk0NjMsODIuNTYzLDEzLjQyNDMyLDgyLjU2MywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTg0LjY2OTQ1LDEwLjE5NDgyaC44NTU0N3YuNzE1MzNoLjA2NjQxYTEuMzQ4LDEuMzQ4LDAsMCwxLDEuMzQzNzUtLjgwMjI1LDEuNDY0NTYsMS40NjQ1NiwwLDAsMSwxLjU1ODU5LDEuNjc0OHYyLjkxNUg4Ny42MDVWMTIuMDA1ODZjMC0uNzIzNjMtLjMxNDQ1LTEuMDgzNS0uOTcxNjgtMS4wODM1YTEuMDMyOTQsMS4wMzI5NCwwLDAsMC0xLjA3NTIsMS4xNDExMXYyLjYzNDI4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05My41MTUxNiw5LjA3MzczdjEuMTQxNmguOTc1NTl2Ljc0ODU0aC0uOTc1NTlWMTMuMjc5M2MwLC40NzE2OC4xOTQzNC42NzgyMi42MzY3Mi42NzgyMmEyLjk2NjU3LDIuOTY2NTcsMCwwLDAsLjMzODg3LS4wMjA1MXYuNzQwMjNhMi45MTU1LDIuOTE1NSwwLDAsMS0uNDgzNC4wNDU0MWMtLjk4ODI4LDAtMS4zODE4NC0uMzQ3NjYtMS4zODE4NC0xLjIxNTgydi0yLjU0M2gtLjcxNDg0di0uNzQ4NTRoLjcxNDg0VjkuMDczNzNaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05NS43MDQ2MSw4LjQzN2guODgwODZ2Mi40ODE0NWguMDcwMzFhMS4zODU2LDEuMzg1NiwwLDAsMSwxLjM3My0uODA2NjQsMS40ODMzOSwxLjQ4MzM5LDAsMCwxLDEuNTUwNzgsMS42Nzg3MXYyLjkwNzIzSDk4LjY5di0yLjY4OGMwLS43MTkyNC0uMzM1LTEuMDgzNS0uOTYyODktMS4wODM1YTEuMDUxOTQsMS4wNTE5NCwwLDAsMC0xLjEzMzc5LDEuMTQxNnYyLjYyOTg4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDQuNzYxMjUsMTMuNDgxOTNhMS44MjgsMS44MjgsMCwwLDEtMS45NTExNywxLjMwMjczQTIuMDQ1MzEsMi4wNDUzMSwwLDAsMSwxMDAuNzMsMTIuNDYwNDVhMi4wNzY4NSwyLjA3Njg1LDAsMCwxLDIuMDc2MTctMi4zNTI1NGMxLjI1MjkzLDAsMi4wMDg3OS44NTYsMi4wMDg3OSwyLjI3VjEyLjY4OGgtMy4xNzk2OXYuMDQ5OGExLjE5MDIsMS4xOTAyLDAsMCwwLDEuMTk5MjIsMS4yOSwxLjA3OTM0LDEuMDc5MzQsMCwwLDAsMS4wNzEyOS0uNTQ1OVptLTMuMTI2LTEuNDUxMTdoMi4yNzQ0MWExLjA4NjQ3LDEuMDg2NDcsMCwwLDAtMS4xMDg0LTEuMTY2NUExLjE1MTYyLDEuMTUxNjIsMCwwLDAsMTAxLjYzNTI3LDEyLjAzMDc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\" alt=\"Download on the App Store\" width=\"120\" height=\"40\"><\/a>\n        <\/div>\n        <p class=\"hero-note\">Free to play on Android and iOS. <b>Over 144,000 word combinations<\/b> in the dictionary.<\/p>\n      <\/div>\n\n      <div class=\"hero-visual\">\n        <div class=\"board-shell\">\n          <div class=\"board\" id=\"board\" role=\"img\" aria-label=\"A six-column board. Six tiles fall and land spelling QUARTZ, which scores 120 points.\"><\/div>\n          <div class=\"board-hud\">\n            <span class=\"lbl\">Score<\/span>\n            <span class=\"val\" id=\"hudScore\">0<\/span>\n            <span class=\"pop\" id=\"hudPop\">+120<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ PROOF ============ -->\n  <div class=\"proof\">\n    <dl class=\"wrap proof-in\">\n      <div><dt>144,000+<\/dt><dd>Word combinations in the bundled dictionary<\/dd><\/div>\n      <div><dt>4<\/dt><dd>Board sizes, from a pocket 3\u00d76 to an 11\u00d722 marathon<\/dd><\/div>\n      <div><dt>12<\/dt><dd>Leaderboards \u2014 every board size at every difficulty<\/dd><\/div>\n      <div><dt>6<\/dt><dd>Board themes, unlocked and swapped at any time<\/dd><\/div>\n    <\/dl>\n  <\/div>\n\n  <!-- ============ HOW IT PLAYS ============ -->\n  <section id=\"play\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <p class=\"eyebrow\">How it plays<\/p>\n        <h2>Three rules, and then it is just you and the board<\/h2>\n        <p class=\"lede\">If you have played a falling-block game you already know the controls. The difference is what makes a line disappear.<\/p>\n      <\/div>\n\n      <div class=\"steps\">\n        <div class=\"step reveal\">\n          <div class=\"step-art\" data-art=\"fall\"><\/div>\n          <span class=\"n\">STEP 01<\/span>\n          <h3>Place the falling tile<\/h3>\n          <p>One lettered tile at a time, sliding down a board you choose the size of. Drop it where it does the most good \u2014 or where it does the least harm.<\/p>\n        <\/div>\n        <div class=\"step reveal\">\n          <div class=\"step-art\" data-art=\"word\"><\/div>\n          <span class=\"n\">STEP 02<\/span>\n          <h3>Spell across or down<\/h3>\n          <p>Any valid word sitting in a row or a column is found for you. No dragging, no submit button \u2014 build it and the board notices.<\/p>\n        <\/div>\n        <div class=\"step reveal\">\n          <div class=\"step-art\" data-art=\"clear\"><\/div>\n          <span class=\"n\">STEP 03<\/span>\n          <h3>Clear it, then keep the chain<\/h3>\n          <p>The word lifts off and everything above falls into the gap. If that landing spells something too, the chain multiplies \u2014 up to eight times the score.<\/p>\n        <\/div>\n      <\/div>\n\n      <p class=\"aside-note reveal\"><b>Words of four letters or more clear on their own.<\/b> Anything shorter asks first, with a timer, so a stray two-letter word never spends a board position you were saving \u2014 which only ever comes up on the 3\u00d76 and 5\u00d710, the two boards that accept words that short. Every word you clear comes with its dictionary definition, if you want it.<\/p>\n    <\/div>\n  <\/section>\n\n  <!-- ============ SCORING ============ -->\n  <section id=\"scoring\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <p class=\"eyebrow\">Scoring<\/p>\n        <h2>A Q is worth ten. A six-letter word is worth five times that.<\/h2>\n        <p class=\"lede\">Every letter carries a value, and word length multiplies the lot. Type anything below and watch what it would pay.<\/p>\n      <\/div>\n\n      <div class=\"score-lab\">\n        <div class=\"lab\">\n          <label class=\"lab-label\" for=\"word\">Score a word<\/label>\n          <input id=\"word\" type=\"text\" value=\"QUARTZ\" maxlength=\"12\" spellcheck=\"false\" autocomplete=\"off\" aria-describedby=\"labMath\">\n          <div class=\"rack\" id=\"rack\" aria-hidden=\"true\"><\/div>\n          <div class=\"math\" id=\"labMath\" role=\"status\">\n            <span class=\"term\"><span>Letters<\/span><strong id=\"mSum\">24<\/strong><\/span>\n            <span class=\"op\">\u00d7<\/span>\n            <span class=\"term\"><span>Length \u00d7<\/span><strong id=\"mMul\">5<\/strong><\/span>\n            <span class=\"out\"><span>Word score<\/span><strong id=\"mOut\">120<\/strong><em id=\"mXp\">+24 XP<\/em><\/span>\n          <\/div>\n          <div class=\"chips\">\n            <button class=\"chip\" type=\"button\">quartz<\/button>\n            <button class=\"chip\" type=\"button\">jazzy<\/button>\n            <button class=\"chip\" type=\"button\">zephyr<\/button>\n            <button class=\"chip\" type=\"button\">cat<\/button>\n          <\/div>\n        <\/div>\n\n        <div>\n          <table class=\"mult-table\">\n            <caption>Length multiplier<\/caption>\n            <tbody>\n              <tr><th scope=\"row\">2\u20133 letters<\/th><td>\u00d71<\/td><\/tr>\n              <tr><th scope=\"row\">4 letters<\/th><td>\u00d72<\/td><\/tr>\n              <tr><th scope=\"row\">5 letters<\/th><td>\u00d73<\/td><\/tr>\n              <tr><th scope=\"row\">6 or more<\/th><td>\u00d75<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n          <p class=\"side-note\">Chained clears multiply again \u2014 1, 2, 3, 5, then 8 \u2014 so one well-placed tile can be worth more than the ten before it. Experience is a fifth of your score, and it accrues for as long as you keep playing.<\/p>\n          <p class=\"side-note\">The shortest legal word is set by the board, not the dictionary \u2014 two letters on the 3\u00d76, five on the 11\u00d722. The multipliers above are the same everywhere.<\/p>\n          <p class=\"side-note\">The dictionary decides what counts as a word. This does the arithmetic.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ BOARDS ============ -->\n  <section id=\"boards\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <p class=\"eyebrow\">Boards<\/p>\n        <h2>The bigger the board, the longer a word has to be<\/h2>\n        <p class=\"lede\">Board size is the difficulty setting nobody expects. It is not just more room \u2014 each step up raises the shortest word the board will accept, so the 11\u00d722 will not take anything under five letters.<\/p>\n      <\/div>\n\n      <div class=\"boards\">\n        <div class=\"b-card reveal\">\n          <div class=\"mini\" style=\"--c:3;--r:6;--g:4px\" aria-hidden=\"true\"><\/div>\n          <div><h3>Small<\/h3><p>3 \u00d7 6<\/p><p class=\"b-range\">Words of <b>2\u20136<\/b> letters<\/p><\/div>\n        <\/div>\n        <div class=\"b-card reveal\">\n          <div class=\"mini\" style=\"--c:5;--r:10;--g:3px\" aria-hidden=\"true\"><\/div>\n          <div><h3>Medium<\/h3><p>5 \u00d7 10<\/p><p class=\"b-range\">Words of <b>3\u201310<\/b> letters<\/p><\/div>\n        <\/div>\n        <div class=\"b-card reveal\">\n          <div class=\"mini\" style=\"--c:7;--r:14;--g:2px\" aria-hidden=\"true\"><\/div>\n          <div><h3>Large<\/h3><p>7 \u00d7 14<\/p><p class=\"b-range\">Words of <b>4\u201314<\/b> letters<\/p><\/div>\n        <\/div>\n        <div class=\"b-card reveal\">\n          <div class=\"mini\" style=\"--c:11;--r:22;--g:1px\" aria-hidden=\"true\"><\/div>\n          <div><h3>Extra large<\/h3><p>11 \u00d7 22<\/p><p class=\"b-range\">Words of <b>5\u201322<\/b> letters<\/p><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"matrix reveal\">\n        <table>\n          <caption>Difficulty changes how fast the tiles fall; the board changes what counts as a word. Every combination keeps its own leaderboard, so a hard 3\u00d76 run is never measured against an easy 11\u00d722 one.<\/caption>\n          <thead>\n            <tr><th scope=\"col\">Board<\/th><th scope=\"col\">Easy<\/th><th scope=\"col\">Intermediate<\/th><th scope=\"col\">Hard<\/th><\/tr>\n          <\/thead>\n          <tbody>\n            <tr><th scope=\"row\">Small \u00b7 3\u00d76<\/th><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><\/tr>\n            <tr><th scope=\"row\">Medium \u00b7 5\u00d710<\/th><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><\/tr>\n            <tr><th scope=\"row\">Large \u00b7 7\u00d714<\/th><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><\/tr>\n            <tr><th scope=\"row\">Extra large \u00b7 11\u00d722<\/th><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><td><span class=\"mark\" aria-hidden=\"true\"><\/span><span class=\"sr\">Leaderboard<\/span><\/td><\/tr>\n          <\/tbody>\n        <\/table>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ POWER-UPS ============ -->\n  <section>\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <p class=\"eyebrow\">Power-ups<\/p>\n        <h2>Five ways to buy yourself out of a bad board<\/h2>\n        <p class=\"lede\">Earned with coins from your runs, from daily rewards, or bought outright. Nothing here is required to compete.<\/p>\n      <\/div>\n\n      <div class=\"powers\">\n        <div class=\"power card reveal\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"10.5\" cy=\"15\" r=\"6.2\"\/><path d=\"M15.2 10.6l2.6-2.6M17.4 5.4l1.2 1.2M20 7.8l1.2 1.2M18.2 8.6l2.2 2.2\"\/><\/svg>\n          <h3>Bombs<\/h3>\n          <p>Detonate a tile you never wanted and the ones around it.<\/p>\n        <\/div>\n        <div class=\"power card reveal\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"6\" y=\"4.5\" width=\"4\" height=\"15\" rx=\"1.2\"\/><rect x=\"14\" y=\"4.5\" width=\"4\" height=\"15\" rx=\"1.2\"\/><\/svg>\n          <h3>Pauses<\/h3>\n          <p>Stop the fall and take the time to read the board properly.<\/p>\n        <\/div>\n        <div class=\"power card reveal\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M20 12a8 8 0 1 1-2.6-5.9\"\/><path d=\"M20.4 4.2v4.4h-4.4\"\/><\/svg>\n          <h3>Reloads<\/h3>\n          <p>Send back the letter you were dealt and draw another one.<\/p>\n        <\/div>\n        <div class=\"power card reveal\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M2.6 12S6 5.8 12 5.8 21.4 12 21.4 12 18 18.2 12 18.2 2.6 12 2.6 12z\"\/><circle cx=\"12\" cy=\"12\" r=\"2.9\"\/><\/svg>\n          <h3>Sneak peeks<\/h3>\n          <p>Look further down the queue before you commit to a placement.<\/p>\n        <\/div>\n        <div class=\"power card reveal\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 6.5h4.2L15 17.5h6M3 17.5h4.2L15 6.5h6\"\/><path d=\"M18.4 3.9L21.4 6.5l-3 2.6M18.4 14.9l3 2.6-3 2.6\"\/><\/svg>\n          <h3>Shuffles<\/h3>\n          <p>Redraw the whole upcoming queue when none of it fits.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ SCREENS ============ -->\n  <section id=\"screens\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <p class=\"eyebrow\">On your phone<\/p>\n        <h2>Screens from the shipping build<\/h2>\n        <p class=\"lede\">Two captured on an Android handset, two from the App Store listing. Unretouched.<\/p>\n      <\/div>\n\n      <div class=\"shots\">\n        <figure class=\"shot\" style=\"margin:0\">\n          <div class=\"phone\"><img decoding=\"async\" src=\"https:\/\/tetratext.expressdevel.com\/wp-content\/uploads\/2026\/09\/tetratext-ios-gameplay.jpg\" alt=\"A three-column board part-filled with letter tiles, one tile falling from the top.\" width=\"554\" height=\"1200\"><\/div>\n          <p><span class=\"plat\">iPhone<\/span><b>The board mid-run<\/b>Two columns already built up, one tile still on its way down, and nowhere obvious to put it.<\/p>\n        <\/figure>\n        <figure class=\"shot\" style=\"margin:0\">\n          <div class=\"phone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tetratext.expressdevel.com\/wp-content\/uploads\/2025\/11\/Screenshot_20251005_165805_TetraText-473x1024.jpg\" alt=\"A prompt reading WORD FOUND with the word NE, a countdown, and accept or decline buttons over the board.\" width=\"473\" height=\"1024\"><\/div>\n          <p><span class=\"plat\">Android<\/span><b>The word decision<\/b>Short words ask before they clear, and the clock keeps running while you decide.<\/p>\n        <\/figure>\n        <figure class=\"shot\" style=\"margin:0\">\n          <div class=\"phone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tetratext.expressdevel.com\/wp-content\/uploads\/2026\/09\/tetratext-ios-menu.jpg\" alt=\"The main menu showing level progress, available power-ups, a difficulty selector and three board sizes.\" width=\"554\" height=\"1200\"><\/div>\n          <p><span class=\"plat\">iPhone<\/span><b>Pick a board, pick a difficulty<\/b>Level progress, your power-up stock, and a separate record kept for every board.<\/p>\n        <\/figure>\n        <figure class=\"shot\" style=\"margin:0\">\n          <div class=\"phone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tetratext.expressdevel.com\/wp-content\/uploads\/2025\/11\/Screenshot_20251005_165712_TetraText-473x1024.jpg\" alt=\"A dialog offering to unlock one, two or all three sneak peek slots before a run.\" width=\"473\" height=\"1024\"><\/div>\n          <p><span class=\"plat\">Android<\/span><b>Peeks before you start<\/b>Open up as much of the upcoming queue as you want to see.<\/p>\n        <\/figure>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ COMMUNITY ============ -->\n  <section id=\"community\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <p class=\"eyebrow\">Support<\/p>\n        <h2>Two doors, both answered<\/h2>\n      <\/div>\n      <div class=\"duo\">\n        <div class=\"card reveal\">\n          <h3>Something broken, or an idea?<\/h3>\n          <p>Our Discord is where bugs get reported, features get argued about, and the next build gets talked through. It is the fastest way to reach us.<\/p>\n          <a class=\"link\" href=\"https:\/\/discord.com\/invite\/3baD94Hv\">Join the Discord \u2192<\/a>\n        <\/div>\n        <div class=\"card reveal\">\n          <h3>Play the next version early<\/h3>\n          <p>The Android testing track gets new builds before they reach everyone else. Expect rough edges \u2014 that is rather the point of it.<\/p>\n          <a class=\"link\" href=\"https:\/\/play.google.com\/apps\/testing\/com.expressdevel.tetratext\">Become an Android tester \u2192<\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ CLOSE ============ -->\n  <section class=\"close\" id=\"get\">\n    <div class=\"wrap\">\n      <div class=\"close-tiles\" aria-hidden=\"true\" id=\"closeTiles\"><\/div>\n      <h2>Go on then. Spell your way out.<\/h2>\n      <p class=\"lede\">Free, on both stores, with your scores waiting on twelve leaderboards.<\/p>\n      <div class=\"close-cta\">\n          <a class=\"badge badge-google\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.expressdevel.tetratext\"><img fetchpriority=\"high\" decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoYAAAD6CAMAAAALK3bYAAAB3VBMVEVHcExXV1deXl5mZmZubm5hYWF4eHiUlJSmpqaNjY1zc3NcXFydnZ2EhISSkpJoaGhJSUkqKioVFRUAAAAfHx9zc3OcnJw0NDR9fX2Hh4c+Pj5TU1NZWVlqamoKCgp9fX1eXl4gICBAQEBwcHAQEBCAgIBgYGAwMDBQUFAHFQoXSiQdXy8nfj4kdDkaVCoQNRqzs7Pm5ubq6ur\/\/\/\/i4uKRkZHd3d3y8vLFxcXs7Oz4+Pjj4+Pu7u7Z2dkqiUQ0qFMxnk4DCwXR0dHz8\/Ofn5\/V1dXv7+\/39\/eIiIgKIBAulEkNKhVra2utra25ubn19fX29vbAwMDp6el6enr09PQUPx\/g4ODw8PAhaTSXl5ckXWPl5eW7u7syZLg6ja\/x8fE6ddZChfQ9krfNzc04pE7JrxNuUwI6pU7WuBP7vATcpQQ\/LwE7pk6tggMfGAE9p05+XgIQDADssQReRwI\/qU69jgOddgNAqU5POwGOagKQkJCgoKDNmQOwsLDQ0NA8qFQvIwE1ply5sDdMgenFeEvKT1nqQzXwcSPobiGwMig5GArOOy9JFRHcPzJ1IhuTKiEPBAM7EQ1YGRSiLiUdCAdLgem\/NytJgOhnHReEJh4sDQpIgOhHgOhFf+dGRnWH0GEdAAAAIHRSTlMAOq\/Z78f6\/\/\/\/9pD\/\/v\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/aub\/\/U59rgoAABDaSURBVHgB7NhVYutAEEXBkUk3McqCMOx\/k48ZQ+OvqjWcge4CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+gmc0XX8By1pSTW67a\/ATOztflhJpFG\/iDdl5OZb4J\/EU7K6fQbPPJbn\/oumMPHwxddxinfHLelOrWbT7adz384uIyH5011Svc5IPx2MMfdFf5oF2foMLpuoe\/uKl\/HzZtkmno4a+6KclZqWirQv5rmJKcl2rmKuQJLvLBrFTSbJJc9zyB\/+G2VLJIMvbwX7uK12Gb5NjDf3X1rsNlkn0PT3CV5LbUsErS9fAE10nuar3Jux6e4j7JQ6mg8SbzdFfJplQwS3Lo4UkekzSVdtddD09yU2lls5AhT9fJEBmCDJEhyBAZggyRIbxn376WWtehMI7fnvv1BBJyoaN8NJ9o43SH3nuH93+HgxmQo8TE7Bm8TtP\/zoxmaZcfLVLe8gy\/TEg5I6WikQI3SSSD8SQVhW\/PVLHIFsk4lJKc8rXh2EBBPHmGs3PzCwuLS8v0tyVXdAN5q3rk\/13DaY1oDeMFVLQObNC0RTa5qRMA+FM3Q0XOhkaS7RewIYkjz3B5K\/2otdSmvyPRMSjq9pRl9dsMzXcYRv0ERSYeHQA0HYaGg6Fn2F5IR2rNEX9hArd+VCvDcACnwYrjPhtyM\/QMt1up284uMbe3AQANHby1ot8fkoKVLBJEQr63D2DfftBlWLWI\/nhXn\/wKgpngQGcADtfVqPtE8DL0DGdb6USLs8RZeATArIjPxybQjRxWk60BWCM3u75i0V6ucNCz+xkAOLYDcpYdz5CX4VZaFuePiOIEQDcmm1rJIqqPYZTAtaXWAWycfg7QCXAWe4acDM\/T8lrnxFUHwCByZVKNDPP9Tpz91EX+IfXJcJgBRnmGjAx30q9a2CWWhAEuT8mtRoaRATZmSr4gDz8GNFQTQM8z5GO4nE7pqk0MXQNIiI9hr2y\/IQBtB0iT4\/MM2RjepNNqLVH9rQM4ZWSogcOJ\/cQtcCvsgDsATc+QjeH9Qzq1nWWquxMgiaYxDGzyJxiulu5ngEzaAeoRyIaeIRfDp+cKh+nCLNVbA9ClZ8jhxMvXwQ8wtPu59fPxxYDTSyARniETw+fnSofpfJvqzIyy2EDRSS0M3f2cX5+HIwNylh0+hp7h80taUWuO7auhQZH+G78aUjQAzmI+hp5htcN0a5fpZ8NskqGRNsH0s2Fe7xAwio+hZ1jtMD\/fY\/lNWX4UN4CTv+035TylAfQYGXqG1Q7t+R7T64ZhBvz62143fC8e5AJ5GHqG33e4c853itIBcM1+iuIOOAbQ7DMy9Axzh9UtbDOdKc9cAkbwniknwg4obGbgY+gZVju053sMN2wo3ABwzHvD5nI4MeD0EjjjY+gZft9ha6n2+4bieJA\/i\/ruGw5K7hu+lgy4AMDL0DOsdmgvZ9d5+\/paNwCgG1kVQZH8EYbF7eu3NnUGAOuqZEA0YGfoGboOWc\/3wgRu5ov3ovwAw7L3opwdq9IBvUN2hp6h65D1fM99Z15jRVGtDMffmRd+MUAZfoaeYblDnsvZct\/cIk\/ra0Gfmd9nmFUzzJMHpe9TNs4AijeAjJmhZ+g65D7fE1LGUioHi5so1tonp0hKSVWLisXx6HK74fizItY8Q9dhRVezf7FzF0YMAzEABItQBz+UvoJmpu7DjJrIwbsa1vAo1EswfNzh+654+OVgqHdovzmbYKh3aL++RzDUO+xpfY9gqHQ4Gk\/EMoKh3uF05nl+IGYRDPUOw4XCRVEsNhEM9Q6TmbcpzYSMg+HCoUbhorwQsgqGCoflzDusCoRsg+HCoU7hopovs0UwVDhsZt5ZeSpkGgwXDpUKF\/mtkGUwXDjUKlxUxUKGwXDhUK1wUZcZ7D0cLC\/1cg4lMLzs8LLCw\/Kn1vfcnL37SHMet9YAvIizApAInGMlmACTe21PnHO2iZ907PDnnMNWnSp9pA6kwyrqeQolfhO7u6H8CoE6QPXBXyVmq+m0szFEh7xCPveue\/FG5eR3MnR0G6Lg5MXlMVysK7ZTG0PGoUQh5s90jTTB84m3AWLjzxLoOvF80mD5ds3GkHOICiX5Ay2NGnw5QdXOsJhoN4Zih6jwKA7b5PcltbUzLGd0G0ORQ1QozaJLiHrwh5J1\/QxLsRtDsUNUKMhPligc\/eGM+s4y9HZjKHaICgWRF9245CcJvbFNZ0xIHtPdXYbebgylDlGhID8nYdRE29BpANon\/KTuLkPvNoYyh6hQlOuMyFnRNNokUFg9Q+SluwxTjo2hyOFfUKEofyVRArNmxOgBFdbPEKNGfxG7MRQ4\/Nvff7w0st9SWugKiY\/lFdbLEJL9eeLG8HD+8c8fH4eh84LJn7N0VxnSCLPDjeEBhV99\/c2PjzIoB16hPHUzhO9hvzE8rPDr5Q5JkM7Dp3CCDGFYDhtDgcLFDu+RINHDh3CKDOGbuDEUKFzs8AcLPluf1Mky1BtDscLlDn8jqcIe\/HkMnSxD2hiKFS53+Cviw3YESW8MN4YChUsd\/p4EsSusT5Ttw38zmIb2xLVnzXLrqBzdmfDfmE7M0LWZv4mUoSszhJc4ep\/gNZ4KQ16h2OE9wZAM124VXS\/ajv4qKReIaROhWezV4T0IyWiicJaeYcjcceqVmCFz\/T4W2tngISmri9uF8yiaJ5xnqJ8hr1Do8PcChbBOHul6aZOkTFubJCle1NlPkjoCeSzD+R0nI2XIvAkD286Nfp5eT3tRUxxkcv0MeYUSh\/LjG242JqvRM2lpFoc9IRibpUt+HltmWHr8US9laC4fjWtnPZPoJlf+Y\/EnAVU\/Q16hwKH8MJvmRpWELonKtK3nY\/ihkQvPkH\/8US1j2PiLaKZd79kkh69s\/vYpfN71M0SFcoe\/\/ytJ0+wZqhpTykWD5AsZBQrnI1bvxQwZhZhRyxliH5yZdtyTB4c4nHOvpamdIa9Q4FB+ig2OR+X\/xqThFfDArC+n5ZvJGOpYbi1mqLK\/jNptp5Lf+1Vr+cE34WBdO0NUKHX4Gzj29bgMJwoGY0w\/csDwg0z\/bZbxdg1T5uNjNsaEgwwHXHnbpusjDvdFhtlcZvqUe4YrIA3GWJPTtBxJJ25ubbFJ7QxRodThH35BdHyGdjqIJqPPLQW\/89Ng2N0O3I1X\/07Pi618OKepTZnhdEqXLJ3FJnx0nmExI9drtpejrpo\/ho\/oNHELlKTrZwgKBQ7hvNfjMzQ4C\/ej5obWvPMvNHfXZt7MMCsglmHAx5\/fIi9mGDU\/eHfzynM94rpEMR2fwv61coaoUOZQfvo1w0YtZZg5hTi4qmkvl\/nHTbMyH8usxFmGDT5++fVIGY6qOIdUfRoIoiMqG+BJzRcoqnqGqFDmsDwplK+U5Qw19iKYdtIVOHSEyRN3HY+VujLDzAx8LsNEbxHDQe9bymjNPit8UmguwoupmyGvkHd4k7+MokDWormhLfrFS7rljkEnvNQxoClMKDJMO4vt6a+KSxjG7vCKujMmhGysg8ee9Pd5rtQ3tTOUKASH8nPkih\/OILluOF69vxkn9nwP5vAzKiJPaMrwd8YwdDO4qk9+EidmGK2m\/QyViZPfwwMytPOv0ABvTdUMeYVsvr3JqZo40dcLGjdXvtryL7R27y9oCry48mQqcQzB5wDrCKDSallvGINBryxDlf0sCRlSgtfLLFqqZShRCA5vdMZwu+RNg7cfEJWKdgxMnGg30LV25f5jKDA0ME01UXIqqGioZNrZ5EuZ9uvj9B8jVcoQFMpz\/wHdILCGkLeNRFpwoScjHA7YJSRTnhmYAwy7JnsI1HqtxLD35cwqh91kMDDVMlyu8OEjumGifELdo68yQ6iK2cfQ7DI0coYX+KKfJFiCrMDQ+D2Zdf95MjXWlTJcrvDxExJGMCqPYrH2FjH0TM3tigwbL2CoUN4AJmtkuFzh02d08+jElwmWeXl9rEE5LxuUmWXJ2gwD3P3ZDZt2nDKEVi2QdFUyXK7w\/nNaI\/CBOpnXgVZdonREttwhZyHDDLrWY+jYE5ebOHtV3dWkuYXnWC1DucKHL2il6CTbnDdM1tRx2QUbt\/eCTVOeT8XiBRtINIroGAwNf6OEDPElN5f\/r6uYoVjh4yfPaLW05XrR8rlXq12+9vjRW\/7HRoahgmVJR5BVGQbm6XN9vPVnGRp4k2plKFb48hWtGJwAubJCpHKsH\/Mi3wUzDCmWarqUXp9hx78Xu68GZom1MnwtVPjmOa0blQ791QkdpiVX65Y2AGrDd4YMw76wDUSPsVmdYcM+KV\/cwZB0tQyFCh+\/oNXTHdjfacGpQ0cIjC\/0irJCr7S40EvNnxH0n71emWHLPilgqJg9EFUyFCpcc1KIKsqLTm0jc15+qew1LS97nf6LVlr2mucOoduOzToMmWoyeFJ+0rtjVK0MZQrvv6LjxHpMzPbso9VNO3hMz41DyepzmoNoE0ATdmueI7MJIPl9DFWab0LAb0G\/AkN4WyK3MwEZNh4yUKUM30oUPnxOR4v1kuRpETLudbKFLVEuIW\/TmZ7dEoUf49gba4Z0aEtUix+8aac3yasw1Anqu4wxg5+EIAFfVaUMJQofv6NjpkueC98XrrVB1EiKbEsMafDFjHoFhgefVeF7HKlOhhKF75\/RceNGvz\/JzuXKFAi3y+fFDPUoU3gDhjoKGeK0wtbJUKDw\/gc6fowX\/JVNTHOzw0N6miQvZUg6FBWuw5Dv8ofAMTR4taZChh+\/kpVzHT+qLCEZ+VFKZoer7Cglu\/goJeoL34J1GPIOR80y1Alefn0MP321QjnXehATj1DLD5Zz3MFyIisqLDxYDlfduKhdkSHpYWcTH8tQ+fOo6hiCQlk51\/Gj7TA3mDsqR7ejpNJFmSgpkW4GfFxNE4YOztzEm8jqXsN5HGEk7fARxo6I+nCWQlFwdQy\/BwrF5VzHT9P24SyDsY4ORbV9EJz669osOJtY2\/7MWofHvGUSnFMcequO9d00\/HHJzJjc1Mfw\/z9\/JS\/nOsXoav5MgYF+uzaGX76Sl3OdZBq4Gn6Lg1WWFTJ8JC\/nOoE0gy7twmrolsfCpevqGNJDWTnXCUS30fu+1MdU0xmaKhm+KJdznVRcTtxmgba2P+fndZUM6U25nOuUktjiQZcqmRrCboE6Gb56zJdznViMZxy6BH3MLQ5euq6UIX14zJdznVSwosqoizO6oATidgf+IHOtDOnZfb6c61TC7EOYHY6equkMu9oYYl682a4UUvbF2FqmFJHqY4j58O7p\/fsvn3CFNJvDXM2Moq2TIWZLrlQhnve6Maw\/hi9erObSdU93geEWF5jixWo6Q682hvWHKR4cGqognTmLpTvDcIvuzBD+k2yaf7dbVwmOAzEQQDvgcU3YMQzD\/S+5zEydpfcOoC9JVf3\/wRpiDcEaYg3BGv4HrOHi29cQbiqt4fzZ3EPPN+Exyaz8erMk+\/6bwFWyKTW0ya7\/FnCf5KHUcPat5RCuk9yVGppvTWW4SnJbqmiTHPuvgi7JttSxTDL2XwW7JPNSx2yT5Lr\/CrhJsi21LJJMQ\/9FcJFn5qWa7Vf3EIYpyarUM2u\/sofQTUnOS03rTZLpuv8C9MKcz0r9Pcx47D8Buqs8065LZes2z+27Hj5wcZn6v\/Cl2TYv7PaHrjv28MzQdYdxygurWTmFxSbwGe28nMhs2QY+oV2UU2rO2sB7zlfrcnKz+WIJrzTzWQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3noK1lrK6lVlJMwAAAAASUVORK5CYII=\" alt=\"Get it on Google Play\" width=\"646\" height=\"250\"><\/a>\n          <a class=\"badge badge-apple\" href=\"https:\/\/apple.co\/47AALxp\"><img decoding=\"async\" src=\"data:image\/svg+xml;base64,PHN2ZyBpZD0ibGl2ZXR5cGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjExOS42NjQwNyIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDExOS42NjQwNyA0MCI+CiAgPHRpdGxlPkRvd25sb2FkX29uX3RoZV9BcHBfU3RvcmVfQmFkZ2VfVVMtVUtfUkdCX2Jsa180U1ZHXzA5MjkxNzwvdGl0bGU+CiAgPGc+CiAgICA8Zz4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTExMC4xMzQ3NywwSDkuNTM0NjhjLS4zNjY3LDAtLjcyOSwwLTEuMDk0NzMuMDAyLS4zMDYxNS4wMDItLjYwOTg2LjAwNzgxLS45MTg5NS4wMTI3QTEzLjIxNDc2LDEzLjIxNDc2LDAsMCwwLDUuNTE3MS4xOTE0MWE2LjY2NTA5LDYuNjY1MDksMCwwLDAtMS45MDA4OC42MjdBNi40Mzc3OSw2LjQzNzc5LDAsMCwwLDEuOTk3NTcsMS45OTcwNyw2LjI1ODQ0LDYuMjU4NDQsMCwwLDAsLjgxOTM1LDMuNjE4MTZhNi42MDExOSw2LjYwMTE5LDAsMCwwLS42MjUsMS45MDMzMiwxMi45OTMsMTIuOTkzLDAsMCwwLS4xNzkyLDIuMDAyQy4wMDU4Nyw3LjgzMDA4LjAwNDg5LDguMTM3NywwLDguNDQ0MzRWMzEuNTU4NmMuMDA0ODkuMzEwNS4wMDU4Ny42MTEzLjAxNTE1LjkyMTlhMTIuOTkyMzIsMTIuOTkyMzIsMCwwLDAsLjE3OTIsMi4wMDE5LDYuNTg3NTYsNi41ODc1NiwwLDAsMCwuNjI1LDEuOTA0M0E2LjIwNzc4LDYuMjA3NzgsMCwwLDAsMS45OTc1NywzOC4wMDFhNi4yNzQ0NSw2LjI3NDQ1LDAsMCwwLDEuNjE4NjUsMS4xNzg3LDYuNzAwODIsNi43MDA4MiwwLDAsMCwxLjkwMDg4LjYzMDgsMTMuNDU1MTQsMTMuNDU1MTQsMCwwLDAsMi4wMDM5LjE3NjhjLjMwOTA5LjAwNjguNjEyOC4wMTA3LjkxODk1LjAxMDdDOC44MDU2Nyw0MCw5LjE2OCw0MCw5LjUzNDY4LDQwSDExMC4xMzQ3N2MuMzU5NCwwLC43MjQ2LDAsMS4wODQtLjAwMi4zMDQ3LDAsLjYxNzItLjAwMzkuOTIxOS0uMDEwN2ExMy4yNzksMTMuMjc5LDAsMCwwLDItLjE3NjgsNi44MDQzMiw2LjgwNDMyLDAsMCwwLDEuOTA4Mi0uNjMwOCw2LjI3NzQyLDYuMjc3NDIsMCwwLDAsMS42MTcyLTEuMTc4Nyw2LjM5NDgyLDYuMzk0ODIsMCwwLDAsMS4xODE2LTEuNjE0Myw2LjYwNDEzLDYuNjA0MTMsMCwwLDAsLjYxOTEtMS45MDQzLDEzLjUwNjQzLDEzLjUwNjQzLDAsMCwwLC4xODU2LTIuMDAxOWMuMDAzOS0uMzEwNi4wMDM5LS42MTE0LjAwMzktLjkyMTkuMDA3OC0uMzYzMy4wMDc4LS43MjQ2LjAwNzgtMS4wOTM4VjkuNTM2MTNjMC0uMzY2MjEsMC0uNzI5NDktLjAwNzgtMS4wOTE3OSwwLS4zMDY2NCwwLS42MTQyNi0uMDAzOS0uOTIwOWExMy41MDcxLDEzLjUwNzEsMCwwLDAtLjE4NTYtMi4wMDIsNi42MTc3LDYuNjE3NywwLDAsMC0uNjE5MS0xLjkwMzMyLDYuNDY2MTksNi40NjYxOSwwLDAsMC0yLjc5ODgtMi43OTk4LDYuNzY3NTQsNi43Njc1NCwwLDAsMC0xLjkwODItLjYyNywxMy4wNDM5NCwxMy4wNDM5NCwwLDAsMC0yLS4xNzY3NmMtLjMwNDctLjAwNDg4LS42MTcyLS4wMTA3NC0uOTIxOS0uMDEyNjktLjM1OTQtLjAwMi0uNzI0Ni0uMDAyLTEuMDg0LS4wMDJaIiBzdHlsZT0iZmlsbDogI2E2YTZhNiIvPgogICAgICAgIDxwYXRoIGQ9Ik04LjQ0NDgzLDM5LjEyNWMtLjMwNDY4LDAtLjYwMi0uMDAzOS0uOTA0MjktLjAxMDdhMTIuNjg3MTQsMTIuNjg3MTQsMCwwLDEtMS44NjkxNC0uMTYzMSw1Ljg4MzgxLDUuODgzODEsMCwwLDEtMS42NTY3NC0uNTQ3OSw1LjQwNTczLDUuNDA1NzMsMCwwLDEtMS4zOTctMS4wMTY2LDUuMzIwODIsNS4zMjA4MiwwLDAsMS0xLjAyMDUxLTEuMzk2NSw1LjcyMTg2LDUuNzIxODYsMCwwLDEtLjU0My0xLjY1NzIsMTIuNDEzNTEsMTIuNDEzNTEsMCwwLDEtLjE2NjUtMS44NzVjLS4wMDYzNC0uMjEwOS0uMDE0NjQtLjkxMzEtLjAxNDY0LS45MTMxVjguNDQ0MzRTLjg4MTg1LDcuNzUyOTMuODg3Nyw3LjU0OThhMTIuMzcwMzksMTIuMzcwMzksMCwwLDEsLjE2NTUzLTEuODcyMDcsNS43NTU1LDUuNzU1NSwwLDAsMSwuNTQzNDYtMS42NjIxQTUuMzczNDksNS4zNzM0OSwwLDAsMSwyLjYxMTgzLDIuNjE3NjgsNS41NjU0Myw1LjU2NTQzLDAsMCwxLDQuMDE0MTcsMS41OTUyMWE1LjgyMzA5LDUuODIzMDksMCwwLDEsMS42NTMzMi0uNTQzOTRBMTIuNTg1ODksMTIuNTg1ODksMCwwLDEsNy41NDMuODg3MjFMOC40NDUzMi44NzVIMTExLjIxMzg3bC45MTMxLjAxMjdhMTIuMzg0OTMsMTIuMzg0OTMsMCwwLDEsMS44NTg0LjE2MjU5LDUuOTM4MzMsNS45MzgzMywwLDAsMSwxLjY3MDkuNTQ3ODUsNS41OTM3NCw1LjU5Mzc0LDAsMCwxLDIuNDE1LDIuNDE5OTMsNS43NjI2Nyw1Ljc2MjY3LDAsMCwxLC41MzUyLDEuNjQ4OTIsMTIuOTk1LDEyLjk5NSwwLDAsMSwuMTczOCwxLjg4NzIxYy4wMDI5LjI4MzIuMDAyOS41ODc0LjAwMjkuODkwMTQuMDA3OS4zNzUuMDA3OS43MzE5My4wMDc5LDEuMDkxNzlWMzAuNDY0OGMwLC4zNjMzLDAsLjcxNzgtLjAwNzksMS4wNzUyLDAsLjMyNTIsMCwuNjIzMS0uMDAzOS45Mjk3YTEyLjczMTI2LDEyLjczMTI2LDAsMCwxLS4xNzA5LDEuODUzNSw1LjczOSw1LjczOSwwLDAsMS0uNTQsMS42Nyw1LjQ4MDI5LDUuNDgwMjksMCwwLDEtMS4wMTU2LDEuMzg1Nyw1LjQxMjksNS40MTI5LDAsMCwxLTEuMzk5NCwxLjAyMjUsNS44NjE2OCw1Ljg2MTY4LDAsMCwxLTEuNjY4LjU0OTgsMTIuNTQyMTgsMTIuNTQyMTgsMCwwLDEtMS44NjkyLjE2MzFjLS4yOTI5LjAwNjgtLjU5OTYuMDEwNy0uODk3NC4wMTA3bC0xLjA4NC4wMDJaIi8+CiAgICAgIDwvZz4KICAgICAgPGcgaWQ9Il9Hcm91cF8iIGRhdGEtbmFtZT0iJmx0O0dyb3VwJmd0OyI+CiAgICAgICAgPGcgaWQ9Il9Hcm91cF8yIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgPGcgaWQ9Il9Hcm91cF8zIiBkYXRhLW5hbWU9IiZsdDtHcm91cCZndDsiPgogICAgICAgICAgICA8cGF0aCBpZD0iX1BhdGhfIiBkYXRhLW5hbWU9IiZsdDtQYXRoJmd0OyIgZD0iTTI0Ljc2ODg4LDIwLjMwMDY4YTQuOTQ4ODEsNC45NDg4MSwwLDAsMSwyLjM1NjU2LTQuMTUyMDYsNS4wNjU2Niw1LjA2NTY2LDAsMCwwLTMuOTkxMTYtMi4xNTc2OGMtMS42NzkyNC0uMTc2MjYtMy4zMDcxOSwxLjAwNDgzLTQuMTYyOSwxLjAwNDgzLS44NzIyNywwLTIuMTg5NzctLjk4NzMzLTMuNjA4NS0uOTU4MTRhNS4zMTUyOSw1LjMxNTI5LDAsMCwwLTQuNDcyOTIsMi43Mjc4N2MtMS45MzQsMy4zNDg0Mi0uNDkxNDEsOC4yNjk0NywxLjM2MTIsMTAuOTc2MDguOTI2OSwxLjMyNTM1LDIuMDEwMTgsMi44MDU4LDMuNDI3NjMsMi43NTMzLDEuMzg3MDYtLjA1NzUzLDEuOTA1MS0uODg0NDgsMy41Nzk0LS44ODQ0OCwxLjY1ODc2LDAsMi4xNDQ3OS44ODQ0OCwzLjU5MS44NTExLDEuNDg4MzgtLjAyNDE2LDIuNDI2MTMtMS4zMzEyNCwzLjMyMDUxLTIuNjY5MTRhMTAuOTYyLDEwLjk2MiwwLDAsMCwxLjUxODQyLTMuMDkyNTFBNC43ODIwNSw0Ljc4MjA1LDAsMCwxLDI0Ljc2ODg4LDIwLjMwMDY4WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgICAgPHBhdGggaWQ9Il9QYXRoXzIiIGRhdGEtbmFtZT0iJmx0O1BhdGgmZ3Q7IiBkPSJNMjIuMDM3MjUsMTIuMjEwODlhNC44NzI0OCw0Ljg3MjQ4LDAsMCwwLDEuMTE0NTItMy40OTA2Miw0Ljk1NzQ2LDQuOTU3NDYsMCwwLDAtMy4yMDc1OCwxLjY1OTYxLDQuNjM2MzQsNC42MzYzNCwwLDAsMC0xLjE0MzcxLDMuMzYxMzlBNC4wOTkwNSw0LjA5OTA1LDAsMCwwLDIyLjAzNzI1LDEyLjIxMDg5WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICAgICAgPGc+CiAgICAgICAgICA8cGF0aCBkPSJNNDIuMzAyMjcsMjcuMTM5NjVoLTQuNzMzNGwtMS4xMzY3MiwzLjM1NjQ1SDM0LjQyNzI3bDQuNDgzNC0xMi40MThoMi4wODNsNC40ODM0LDEyLjQxOEg0My40MzhaTTM4LjA1OTEsMjUuNTkwODJoMy43NTJsLTEuODQ5NjEtNS40NDcyN2gtLjA1MTc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik01NS4xNTk2OSwyNS45Njk3M2MwLDIuODEzNDgtMS41MDU4Niw0LjYyMTA5LTMuNzc4MzIsNC42MjEwOWEzLjA2OTMsMy4wNjkzLDAsMCwxLTIuODQ4NjMtMS41ODRoLS4wNDN2NC40ODQzOGgtMS44NTg0VjIxLjQ0MjM4SDQ4LjQzMDJ2MS41MDU4NmguMDM0MThhMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDIuODgyODEtMS42MDA1OUM1My42NDUsMjEuMzQ3NjYsNTUuMTU5NjksMjMuMTY0MDYsNTUuMTU5NjksMjUuOTY5NzNabS0xLjkxMDE2LDBjMC0xLjgzMy0uOTQ3MjctMy4wMzgwOS0yLjM5MjU4LTMuMDM4MDktMS40MTk5MiwwLTIuMzc1LDEuMjMwNDctMi4zNzUsMy4wMzgwOSwwLDEuODI0MjIuOTU1MDgsMy4wNDU5LDIuMzc1LDMuMDQ1OUM1Mi4zMDIyNywyOS4wMTU2Myw1My4yNDk1MywyNy44MTkzNCw1My4yNDk1MywyNS45Njk3M1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNNjUuMTI0NTMsMjUuOTY5NzNjMCwyLjgxMzQ4LTEuNTA1ODYsNC42MjEwOS0zLjc3ODMyLDQuNjIxMDlhMy4wNjkzLDMuMDY5MywwLDAsMS0yLjg0ODYzLTEuNTg0aC0uMDQzdjQuNDg0MzhoLTEuODU4NFYyMS40NDIzOEg1OC4zOTV2MS41MDU4NmguMDM0MThBMy4yMTE2MiwzLjIxMTYyLDAsMCwxLDYxLjMxMiwyMS4zNDc2NkM2My42MDk4OCwyMS4zNDc2Niw2NS4xMjQ1MywyMy4xNjQwNiw2NS4xMjQ1MywyNS45Njk3M1ptLTEuOTEwMTYsMGMwLTEuODMzLS45NDcyNy0zLjAzODA5LTIuMzkyNTgtMy4wMzgwOS0xLjQxOTkyLDAtMi4zNzUsMS4yMzA0Ny0yLjM3NSwzLjAzODA5LDAsMS44MjQyMi45NTUwOCwzLjA0NTksMi4zNzUsMy4wNDU5QzYyLjI2NzExLDI5LjAxNTYzLDYzLjIxNDM4LDI3LjgxOTM0LDYzLjIxNDM4LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik03MS43MTA0NywyNy4wMzYxM2MuMTM3NywxLjIzMTQ1LDEuMzM0LDIuMDQsMi45Njg3NSwyLjA0LDEuNTY2NDEsMCwyLjY5MzM2LS44MDg1OSwyLjY5MzM2LTEuOTE4OTUsMC0uOTYzODctLjY3OTY5LTEuNTQxLTIuMjg5MDYtMS45MzY1MmwtMS42MDkzNy0uMzg3N2MtMi4yODAyNy0uNTUwNzgtMy4zMzg4Ny0xLjYxNzE5LTMuMzM4ODctMy4zNDc2NiwwLTIuMTQyNTgsMS44NjcxOS0zLjYxNDI2LDQuNTE4NTUtMy42MTQyNiwyLjYyNCwwLDQuNDIyODUsMS40NzE2OCw0LjQ4MzQsMy42MTQyNmgtMS44NzZjLS4xMTIzLTEuMjM5MjYtMS4xMzY3Mi0xLjk4NzMtMi42MzM3OS0xLjk4NzNzLTIuNTIxNDguNzU2ODQtMi41MjE0OCwxLjg1ODRjMCwuODc3OTMuNjU0MywxLjM5NDUzLDIuMjU0ODgsMS43OWwxLjM2ODE2LjMzNTk0YzIuNTQ3ODUuNjAyNTQsMy42MDY0NSwxLjYyNiwzLjYwNjQ1LDMuNDQyMzgsMCwyLjMyMzI0LTEuODUwNTksMy43NzgzMi00Ljc5Mzk1LDMuNzc4MzItMi43NTM5MSwwLTQuNjEzMjgtMS40MjA5LTQuNzMzNC0zLjY2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODMuMzQ2MjEsMTkuMjk5OHYyLjE0MjU4aDEuNzIxNjh2MS40NzE2OEg4My4zNDYyMXY0Ljk5MTIxYzAsLjc3NTM5LjM0NDczLDEuMTM2NzIsMS4xMDE1NiwxLjEzNjcyYTUuODA3NTIsNS44MDc1MiwwLDAsMCwuNjExMzMtLjA0M3YxLjQ2Mjg5YTUuMTAzNTEsNS4xMDM1MSwwLDAsMS0xLjAzMjIzLjA4NTk0Yy0xLjgzMywwLTIuNTQ3ODUtLjY4ODQ4LTIuNTQ3ODUtMi40NDQzNFYyMi45MTQwNkg4MC4xNjI2MlYyMS40NDIzOEg4MS40NzlWMTkuMjk5OFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNODYuMDY1LDI1Ljk2OTczYzAtMi44NDg2MywxLjY3NzczLTQuNjM4NjcsNC4yOTM5NS00LjYzODY3LDIuNjI1LDAsNC4yOTQ5MiwxLjc5LDQuMjk0OTIsNC42Mzg2NywwLDIuODU2NDUtMS42NjExMyw0LjYzODY3LTQuMjk0OTIsNC42Mzg2N0M4Ny43MjYwOSwzMC42MDg0LDg2LjA2NSwyOC44MjYxNyw4Ni4wNjUsMjUuOTY5NzNabTYuNjk1MzEsMGMwLTEuOTU0MS0uODk1NTEtMy4xMDc0Mi0yLjQwMTM3LTMuMTA3NDJzLTIuNDAwMzksMS4xNjIxMS0yLjQwMDM5LDMuMTA3NDJjMCwxLjk2MTkxLjg5NDUzLDMuMTA2NDUsMi40MDAzOSwzLjEwNjQ1UzkyLjc2MDI3LDI3LjkzMTY0LDkyLjc2MDI3LDI1Ljk2OTczWiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICAgIDxwYXRoIGQ9Ik05Ni4xODYwNiwyMS40NDIzOGgxLjc3MjQ2djEuNTQxaC4wNDNhMi4xNTk0LDIuMTU5NCwwLDAsMSwyLjE3NzczLTEuNjM1NzQsMi44NjYxNiwyLjg2NjE2LDAsMCwxLC42MzY3Mi4wNjkzNHYxLjczODI4YTIuNTk3OTQsMi41OTc5NCwwLDAsMC0uODM1LS4xMTIzLDEuODcyNjQsMS44NzI2NCwwLDAsMC0xLjkzNjUyLDIuMDgzdjUuMzcwMTJoLTEuODU4NFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgICA8cGF0aCBkPSJNMTA5LjM4NDMsMjcuODM2OTFjLS4yNSwxLjY0MzU1LTEuODUwNTksMi43NzE0OC0zLjg5ODQ0LDIuNzcxNDgtMi42MzM3OSwwLTQuMjY4NTUtMS43NjQ2NS00LjI2ODU1LTQuNTk1NywwLTIuODM5ODQsMS42NDM1NS00LjY4MTY0LDQuMTkwNDMtNC42ODE2NCwyLjUwNDg4LDAsNC4wODAwOCwxLjcyMDcsNC4wODAwOCw0LjQ2NTgydi42MzY3MmgtNi4zOTQ1M3YuMTEyM2EyLjM1OCwyLjM1OCwwLDAsMCwyLjQzNTU1LDIuNTY0NDUsMi4wNDgzNCwyLjA0ODM0LDAsMCwwLDIuMDkwODItMS4yNzM0NFptLTYuMjgyMjMtMi43MDIxNWg0LjUyNjM3YTIuMTc3MywyLjE3NzMsMCwwLDAtMi4yMjA3LTIuMjk3ODVBMi4yOTIsMi4yOTIsMCwwLDAsMTAzLjEwMjA3LDI1LjEzNDc3WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8L2c+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJfR3JvdXBfNCIgZGF0YS1uYW1lPSImbHQ7R3JvdXAmZ3Q7Ij4KICAgICAgPGc+CiAgICAgICAgPHBhdGggZD0iTTM3LjgyNjE5LDguNzMxYTIuNjM5NjQsMi42Mzk2NCwwLDAsMSwyLjgwNzYyLDIuOTY0ODRjMCwxLjkwNjI1LTEuMDMwMjcsMy4wMDItMi44MDc2MiwzLjAwMkgzNS42NzA5MlY4LjczMVptLTEuMjI4NTIsNS4xMjNoMS4xMjVhMS44NzU4OCwxLjg3NTg4LDAsMCwwLDEuOTY3NzctMi4xNDYsMS44ODEsMS44ODEsMCwwLDAtMS45Njc3Ny0yLjEzMzc5aC0xLjEyNVoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTQxLjY4MDY4LDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDNDQuNTc1MjIsMTMuOTk0NjMsNDUuMDEzNjksMTMuNDI0MzIsNDUuMDEzNjksMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01MS41NzMyNiwxNC42OTc3NWgtLjkyMTg3bC0uOTMwNjYtMy4zMTY0MWgtLjA3MDMxbC0uOTI2NzYsMy4zMTY0MWgtLjkxMzA5bC0xLjI0MTIxLTQuNTAyOTNoLjkwMTM3bC44MDY2NCwzLjQzNmguMDY2NDFsLjkyNTc4LTMuNDM2aC44NTI1NGwuOTI1NzgsMy40MzZoLjA3MDMxbC44MDI3My0zLjQzNmguODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik01My44NTM1NCwxMC4xOTQ4Mkg1NC43MDl2LjcxNTMzaC4wNjY0MWExLjM0OCwxLjM0OCwwLDAsMSwxLjM0Mzc1LS44MDIyNSwxLjQ2NDU2LDEuNDY0NTYsMCwwLDEsMS41NTg1OSwxLjY3NDh2Mi45MTVoLS44ODg2N1YxMi4wMDU4NmMwLS43MjM2My0uMzE0NDUtMS4wODM1LS45NzE2OC0xLjA4MzVhMS4wMzI5NCwxLjAzMjk0LDAsMCwwLTEuMDc1MiwxLjE0MTExdjIuNjM0MjhoLS44ODg2N1oiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTU5LjA5Mzc3LDguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02MS4yMTc3OSwxMi40NDQzNGEyLjEzMzQ2LDIuMTMzNDYsMCwxLDEsNC4yNDc1NiwwLDIuMTMzOCwyLjEzMzgsMCwxLDEtNC4yNDc1NiwwWm0zLjMzMywwYzAtLjk3NjA3LS40Mzg0OC0xLjU0Njg3LTEuMjA4LTEuNTQ2ODctLjc3MjQ2LDAtMS4yMDcuNTcwOC0xLjIwNywxLjU0Njg4LDAsLjk4Mzg5LjQzNDU3LDEuNTUwMjksMS4yMDcsMS41NTAyOUM2NC4xMTIzMiwxMy45OTQ2Myw2NC41NTA4LDEzLjQyNDMyLDY0LjU1MDgsMTIuNDQ0MzRaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik02Ni40MDA5LDEzLjQyNDMyYzAtLjgxMDU1LjYwMzUyLTEuMjc3ODMsMS42NzQ4LTEuMzQ0MjRsMS4yMTk3My0uMDcwMzF2LS4zODg2N2MwLS40NzU1OS0uMzE0NDUtLjc0NDE0LS45MjE4Ny0uNzQ0MTQtLjQ5NjA5LDAtLjgzOTg0LjE4MjEzLS45Mzg0OC41MDA0OWgtLjg2MDM1Yy4wOTA4Mi0uNzczNDQuODE4MzYtMS4yNjk1MywxLjgzOTg0LTEuMjY5NTMsMS4xMjg5MSwwLDEuNzY1NjMuNTYyLDEuNzY1NjMsMS41MTMxOHYzLjA3NjY2aC0uODU1NDd2LS42MzI4MWgtLjA3MDMxYTEuNTE1LDEuNTE1LDAsMCwxLTEuMzUyNTQuNzA3QTEuMzYwMjYsMS4zNjAyNiwwLDAsMSw2Ni40MDA5LDEzLjQyNDMyWm0yLjg5NDUzLS4zODQ3N3YtLjM3NjQ2bC0xLjA5OTYxLjA3MDMxYy0uNjIwMTIuMDQxNS0uOTAxMzcuMjUyNDQtLjkwMTM3LjY0OTQxLDAsLjQwNTI3LjM1MTU2LjY0MTExLjgzNS42NDExMUExLjA2MTUsMS4wNjE1LDAsMCwwLDY5LjI5NTQzLDEzLjAzOTU1WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgICA8cGF0aCBkPSJNNzEuMzQ4MTYsMTIuNDQ0MzRjMC0xLjQyMjg1LjczMTQ1LTIuMzI0MjIsMS44NjkxNC0yLjMyNDIyYTEuNDg0LDEuNDg0LDAsMCwxLDEuMzgwODYuNzloLjA2NjQxVjguNDM3aC44ODg2N3Y2LjI2MDc0aC0uODUxNTZ2LS43MTE0M2gtLjA3MDMxYTEuNTYyODQsMS41NjI4NCwwLDAsMS0xLjQxNDA2Ljc4NTY0QzcyLjA3MTgsMTQuNzcyLDcxLjM0ODE2LDEzLjg3MDYxLDcxLjM0ODE2LDEyLjQ0NDM0Wm0uOTE4LDBjMCwuOTU1MDguNDUwMiwxLjUyOTc5LDEuMjAzMTMsMS41Mjk3OS43NDksMCwxLjIxMTkxLS41ODMsMS4yMTE5MS0xLjUyNTg4LDAtLjkzODQ4LS40Njc3Ny0xLjUyOTc5LTEuMjExOTEtMS41Mjk3OUM3Mi43MjEyMSwxMC45MTg0Niw3Mi4yNjYxMywxMS40OTcwNyw3Mi4yNjYxMywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTc5LjIzLDEyLjQ0NDM0YTIuMTMzMjMsMi4xMzMyMywwLDEsMSw0LjI0NzA3LDAsMi4xMzM1OCwyLjEzMzU4LDAsMSwxLTQuMjQ3MDcsMFptMy4zMzMsMGMwLS45NzYwNy0uNDM4NDgtMS41NDY4Ny0xLjIwOC0xLjU0Njg3LS43NzI0NiwwLTEuMjA3LjU3MDgtMS4yMDcsMS41NDY4OCwwLC45ODM4OS40MzQ1NywxLjU1MDI5LDEuMjA3LDEuNTUwMjlDODIuMTI0NTMsMTMuOTk0NjMsODIuNTYzLDEzLjQyNDMyLDgyLjU2MywxMi40NDQzNFoiIHN0eWxlPSJmaWxsOiAjZmZmIi8+CiAgICAgICAgPHBhdGggZD0iTTg0LjY2OTQ1LDEwLjE5NDgyaC44NTU0N3YuNzE1MzNoLjA2NjQxYTEuMzQ4LDEuMzQ4LDAsMCwxLDEuMzQzNzUtLjgwMjI1LDEuNDY0NTYsMS40NjQ1NiwwLDAsMSwxLjU1ODU5LDEuNjc0OHYyLjkxNUg4Ny42MDVWMTIuMDA1ODZjMC0uNzIzNjMtLjMxNDQ1LTEuMDgzNS0uOTcxNjgtMS4wODM1YTEuMDMyOTQsMS4wMzI5NCwwLDAsMC0xLjA3NTIsMS4xNDExMXYyLjYzNDI4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05My41MTUxNiw5LjA3MzczdjEuMTQxNmguOTc1NTl2Ljc0ODU0aC0uOTc1NTlWMTMuMjc5M2MwLC40NzE2OC4xOTQzNC42NzgyMi42MzY3Mi42NzgyMmEyLjk2NjU3LDIuOTY2NTcsMCwwLDAsLjMzODg3LS4wMjA1MXYuNzQwMjNhMi45MTU1LDIuOTE1NSwwLDAsMS0uNDgzNC4wNDU0MWMtLjk4ODI4LDAtMS4zODE4NC0uMzQ3NjYtMS4zODE4NC0xLjIxNTgydi0yLjU0M2gtLjcxNDg0di0uNzQ4NTRoLjcxNDg0VjkuMDczNzNaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik05NS43MDQ2MSw4LjQzN2guODgwODZ2Mi40ODE0NWguMDcwMzFhMS4zODU2LDEuMzg1NiwwLDAsMSwxLjM3My0uODA2NjQsMS40ODMzOSwxLjQ4MzM5LDAsMCwxLDEuNTUwNzgsMS42Nzg3MXYyLjkwNzIzSDk4LjY5di0yLjY4OGMwLS43MTkyNC0uMzM1LTEuMDgzNS0uOTYyODktMS4wODM1YTEuMDUxOTQsMS4wNTE5NCwwLDAsMC0xLjEzMzc5LDEuMTQxNnYyLjYyOTg4aC0uODg4NjdaIiBzdHlsZT0iZmlsbDogI2ZmZiIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDQuNzYxMjUsMTMuNDgxOTNhMS44MjgsMS44MjgsMCwwLDEtMS45NTExNywxLjMwMjczQTIuMDQ1MzEsMi4wNDUzMSwwLDAsMSwxMDAuNzMsMTIuNDYwNDVhMi4wNzY4NSwyLjA3Njg1LDAsMCwxLDIuMDc2MTctMi4zNTI1NGMxLjI1MjkzLDAsMi4wMDg3OS44NTYsMi4wMDg3OSwyLjI3VjEyLjY4OGgtMy4xNzk2OXYuMDQ5OGExLjE5MDIsMS4xOTAyLDAsMCwwLDEuMTk5MjIsMS4yOSwxLjA3OTM0LDEuMDc5MzQsMCwwLDAsMS4wNzEyOS0uNTQ1OVptLTMuMTI2LTEuNDUxMTdoMi4yNzQ0MWExLjA4NjQ3LDEuMDg2NDcsMCwwLDAtMS4xMDg0LTEuMTY2NUExLjE1MTYyLDEuMTUxNjIsMCwwLDAsMTAxLjYzNTI3LDEyLjAzMDc2WiIgc3R5bGU9ImZpbGw6ICNmZmYiLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==\" alt=\"Download on the App Store\" width=\"120\" height=\"40\"><\/a>\n        <\/div>\n    <\/div>\n  <\/section>\n<\/main>\n\n<footer>\n  <div class=\"wrap foot-in\">\n    <span>\u00a9 <span id=\"yr\">2026<\/span> Express Development Group LLC<\/span>\n    <a href=\"https:\/\/tetratext.expressdevel.com\/index.php\/privacy-policy\/\">Privacy policy<\/a>\n    <a href=\"https:\/\/discord.com\/invite\/3baD94Hv\">Discord<\/a>\n    <a href=\"#\" onclick=\"ttOpenCookieSettings();return false;\">Cookie settings<\/a>\n    <span class=\"sp tm\">Google Play and the Google Play logo are trademarks of Google LLC. App Store is a service mark of Apple Inc.<\/span>\n  <\/div>\n<\/footer>\n\n<script>\n(function(){\n  \"use strict\";\n\n  var VALUES = {A:1,B:3,C:3,D:2,E:1,F:4,G:2,H:4,I:1,J:8,K:5,L:1,M:3,N:1,O:1,\n                P:3,Q:10,R:1,S:1,T:1,U:1,V:4,W:4,X:8,Y:4,Z:10};\n  var RARE = {J:1,Q:1,X:1,Z:1};\n  var REDUCED = window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n  function tile(letter, opts){\n    opts = opts || {};\n    var el = document.createElement(\"span\");\n    el.className = \"tile\" + (RARE[letter] ? \" rare\" : \"\") + (opts.cls ? \" \" + opts.cls : \"\");\n    var b = document.createElement(\"b\");\n    b.textContent = letter;\n    el.appendChild(b);\n    var v = document.createElement(\"i\");\n    v.textContent = VALUES[letter];\n    el.appendChild(v);\n    return el;\n  }\n\n  function lengthMultiplier(n){\n    if (n >= 6) return 5;\n    if (n === 5) return 3;\n    if (n === 4) return 2;\n    return 1;\n  }\n\n  \/* ---------- hero board ---------- *\/\n  var board = document.getElementById(\"board\");\n  var hudScore = document.getElementById(\"hudScore\");\n  var hudPop = document.getElementById(\"hudPop\");\n  var WORD = \"QUARTZ\";\n  var SETTLED = [ {l:\"F\", c:1, r:7}, {l:\"I\", c:4, r:7}, {l:\"O\", c:5, r:6} ];\n  var timers = [];\n\n  function clearTimers(){\n    timers.forEach(clearTimeout);\n    timers = [];\n  }\n\n  function countTo(target, ms){\n    if (REDUCED){ hudScore.textContent = target; return; }\n    var start = performance.now();\n    function frame(now){\n      var t = Math.min(1, (now - start) \/ ms);\n      hudScore.textContent = Math.round(target * (1 - Math.pow(1 - t, 3)));\n      if (t < 1) requestAnimationFrame(frame);\n    }\n    requestAnimationFrame(frame);\n  }\n\n  function runBoard(){\n    clearTimers();\n    board.innerHTML = \"\";\n    hudScore.textContent = \"0\";\n    hudPop.classList.remove(\"on\");\n\n    \/* Place the empty cells explicitly. Left to auto-placement they flow\n       around the tiles positioned below and spill into implicit rows,\n       which shrinks the eight real rows and leaves a dead strip at the\n       bottom of the board. *\/\n    for (var i = 0; i < 48; i++){\n      var cell = document.createElement(\"span\");\n      cell.className = \"cell\";\n      cell.style.gridRow = Math.floor(i \/ 6) + 1;\n      cell.style.gridColumn = (i % 6) + 1;\n      board.appendChild(cell);\n    }\n\n    SETTLED.forEach(function(s){\n      var t = tile(s.l);\n      t.style.gridColumn = s.c;\n      t.style.gridRow = s.r;\n      board.appendChild(t);\n    });\n\n    var placed = [];\n    WORD.split(\"\").forEach(function(letter, i){\n      var t = tile(letter, {cls:\"drop pre\"});\n      t.style.gridColumn = i + 1;\n      t.style.gridRow = 8;\n      board.appendChild(t);\n      placed.push(t);\n      timers.push(setTimeout(function(){ t.classList.remove(\"pre\"); }, 260 + i * 210));\n    });\n\n    timers.push(setTimeout(function(){\n      placed.forEach(function(t){ t.classList.remove(\"rare\"); t.classList.add(\"word\"); });\n      hudPop.classList.add(\"on\");\n      countTo(120, 700);\n    }, 260 + WORD.length * 210 + 420));\n  }\n\n  if (board){\n    runBoard();\n    board.addEventListener(\"click\", runBoard);\n  }\n\n  \/* ---------- step artwork ---------- *\/\n  var ART = {\n    fall:  [{l:\"R\"}, {l:\"A\"}, {l:\"E\", cls:\"empty\"}],\n    word:  [{l:\"K\"}, {l:\"E\"}, {l:\"Y\"}],\n    clear: [{l:\"J\"}, {l:\"O\", cls:\"word\"}, {l:\"T\", cls:\"word\"}]\n  };\n  Array.prototype.forEach.call(document.querySelectorAll(\"[data-art]\"), function(host){\n    var spec = ART[host.getAttribute(\"data-art\")] || [];\n    spec.forEach(function(s, i){\n      var t;\n      if (s.cls === \"empty\"){\n        t = document.createElement(\"span\");\n        t.className = \"tile empty\";\n      } else {\n        t = tile(s.l, {cls: s.cls});\n      }\n      t.style.setProperty(\"--cell\", \"44px\");\n      \/* This script deliberately contains no ampersand character anywhere.\n         WordPress rewrites a bare one in block content as a numeric HTML\n         entity, which turns a logical-and operator into a syntax error and\n         kills the whole file. Use nested ifs or a precomputed boolean. *\/\n      if (host.getAttribute(\"data-art\") === \"fall\"){\n        if (i === 2) t.style.opacity = \".55\";\n      }\n      host.appendChild(t);\n    });\n  });\n\n  \/* ---------- closing tiles ---------- *\/\n  var close = document.getElementById(\"closeTiles\");\n  if (close){\n    \"TETRATEXT\".split(\"\").forEach(function(l){ close.appendChild(tile(l)); });\n  }\n\n  \/* ---------- scoring lab ---------- *\/\n  var input = document.getElementById(\"word\");\n  var rack = document.getElementById(\"rack\");\n  var mSum = document.getElementById(\"mSum\");\n  var mMul = document.getElementById(\"mMul\");\n  var mOut = document.getElementById(\"mOut\");\n  var mXp  = document.getElementById(\"mXp\");\n\n  function render(){\n    var raw = (input.value || \"\").toUpperCase().replace(\/[^A-Z]\/g, \"\").slice(0, 12);\n    if (raw !== input.value) input.value = raw;\n\n    rack.innerHTML = \"\";\n    if (!raw){\n      for (var i = 0; i < 3; i++){\n        var e = document.createElement(\"span\");\n        e.className = \"tile empty\";\n        rack.appendChild(e);\n      }\n      mSum.textContent = \"0\";\n      mMul.textContent = \"1\";\n      mOut.textContent = \"0\";\n      mXp.textContent = \"\";\n      return;\n    }\n\n    var sum = 0;\n    raw.split(\"\").forEach(function(l){\n      sum += VALUES[l];\n      rack.appendChild(tile(l));\n    });\n\n    var mul = lengthMultiplier(raw.length);\n    var points = sum * mul;\n    mSum.textContent = sum;\n    mMul.textContent = mul;\n    mOut.textContent = points;\n    mXp.textContent = \"+\" + Math.max(1, Math.round(points \/ 5)) + \" XP\";\n  }\n\n  if (input){\n    input.addEventListener(\"input\", render);\n    Array.prototype.forEach.call(document.querySelectorAll(\".chip\"), function(chip){\n      chip.addEventListener(\"click\", function(){\n        input.value = chip.textContent.trim().toUpperCase();\n        render();\n        input.focus();\n      });\n    });\n    render();\n  }\n\n  \/* ---------- mini boards ---------- *\/\n  Array.prototype.forEach.call(document.querySelectorAll(\".mini\"), function(m){\n    var c = parseInt(m.style.getPropertyValue(\"--c\"), 10);\n    var r = parseInt(m.style.getPropertyValue(\"--r\"), 10);\n    var total = c * r;\n    var filled = {};\n    if (c === 3){ filled[total - 3] = \"f\"; filled[total - 2] = \"v\"; filled[total - 1] = \"f\"; }\n    for (var i = 0; i < total; i++){\n      var cell = document.createElement(\"i\");\n      if (filled[i]) cell.className = filled[i];\n      m.appendChild(cell);\n    }\n  });\n\n  \/* ---------- reveals ---------- *\/\n  \/* A scroll sweep rather than an IntersectionObserver. The nav links jump\n     to #boards and #screens, and an observer reliably misses elements that\n     an instant scroll jump skips past, which leaves whole sections sitting\n     at opacity 0. This cannot miss: anything at or above the fold reveals,\n     and each element drops out of the list once it has. *\/\n  var pending = Array.prototype.slice.call(document.querySelectorAll(\".reveal\"));\n\n  var settleTimer = 0;\n\n  function sweep(){\n    for (var i = pending.length - 1; i >= 0; i--){\n      if (pending[i].getBoundingClientRect().top < window.innerHeight - 40){\n        pending[i].classList.add(\"in\");\n        pending.splice(i, 1);\n      }\n    }\n    if (pending.length === 0){\n      window.removeEventListener(\"scroll\", onScroll);\n      window.removeEventListener(\"resize\", onScroll);\n    }\n  }\n\n  \/* Sweep during the scroll and once more after it stops. Without the settle\n     pass, an element that comes to rest just past the threshold stays hidden:\n     at the bottom of the page there is no further scroll event to catch it. *\/\n  function onScroll(){\n    sweep();\n    clearTimeout(settleTimer);\n    if (pending.length > 0) settleTimer = setTimeout(sweep, 200);\n  }\n\n  if (REDUCED){\n    pending.forEach(function(el){ el.classList.add(\"in\"); });\n    pending.length = 0;\n  } else {\n    window.addEventListener(\"scroll\", onScroll, {passive:true});\n    window.addEventListener(\"resize\", onScroll);\n    window.addEventListener(\"load\", onScroll);\n    \/* The browser jumps to a #hash after load, and the webfonts reflow the\n       page when they arrive. Both move elements into view without a scroll\n       event, so sweep again on the hash and a few times as things settle. *\/\n    window.addEventListener(\"hashchange\", onScroll);\n    sweep();\n    setTimeout(sweep, 300);\n    setTimeout(sweep, 1200);\n    setTimeout(sweep, 2500);\n  }\n\n  var yr = document.getElementById(\"yr\");\n  if (yr) yr.textContent = new Date().getFullYear();\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>TetraText How it plays Scoring Boards Screens Support Get it free Letters fall.You spell your way out. A word game with a falling-block problem underneath it. Tiles drop, you place them, and any word you form across or down clears itself off the board. Rare letters are worth more. Long words are worth a great [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":200,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"blank","meta":{"footnotes":""},"class_list":["post-190","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TetraText - word puzzle with falling letters<\/title>\n<meta name=\"description\" content=\"Letters fall and you spell your way out. A word puzzle with a falling-block twist: four board sizes, twelve leaderboards. Free on iOS and Android.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tetratext.com\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TetraText - word puzzle with falling letters\" \/>\n<meta property=\"og:description\" content=\"Letters fall and you spell your way out. A word puzzle with a falling-block twist: four board sizes, twelve leaderboards. Free on iOS and Android.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tetratext.com\/\" \/>\n<meta property=\"og:site_name\" content=\"TetraText, a unique word block puzzle game!\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-04T11:10:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tetratext.com\/wp-content\/uploads\/2026\/09\/tetratext-share-card.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tetratext.com\\\/\",\"url\":\"https:\\\/\\\/tetratext.com\\\/\",\"name\":\"TetraText - word puzzle with falling letters\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tetratext.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tetratext.com\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tetratext.com\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tetratext.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/tetratext-share-card.png\",\"datePublished\":\"2026-09-03T22:50:51+00:00\",\"dateModified\":\"2026-09-04T11:10:48+00:00\",\"description\":\"Letters fall and you spell your way out. A word puzzle with a falling-block twist: four board sizes, twelve leaderboards. Free on iOS and Android.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tetratext.com\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tetratext.com\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tetratext.com\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tetratext.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/tetratext-share-card.png\",\"contentUrl\":\"https:\\\/\\\/tetratext.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/tetratext-share-card.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tetratext.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tetratext.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TetraText\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tetratext.com\\\/#website\",\"url\":\"https:\\\/\\\/tetratext.com\\\/\",\"name\":\"TetraText, a unique word block puzzle game!\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/tetratext.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tetratext.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/tetratext.com\\\/#organization\",\"name\":\"TetraText, a unique word block puzzle game!\",\"url\":\"https:\\\/\\\/tetratext.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tetratext.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/tetratext.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/TetraText-200x200-2.png\",\"contentUrl\":\"https:\\\/\\\/tetratext.com\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/TetraText-200x200-2.png\",\"width\":200,\"height\":200,\"caption\":\"TetraText, a unique word block puzzle game!\"},\"image\":{\"@id\":\"https:\\\/\\\/tetratext.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TetraText - word puzzle with falling letters","description":"Letters fall and you spell your way out. A word puzzle with a falling-block twist: four board sizes, twelve leaderboards. Free on iOS and Android.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tetratext.com\/","og_locale":"en_US","og_type":"article","og_title":"TetraText - word puzzle with falling letters","og_description":"Letters fall and you spell your way out. A word puzzle with a falling-block twist: four board sizes, twelve leaderboards. Free on iOS and Android.","og_url":"https:\/\/tetratext.com\/","og_site_name":"TetraText, a unique word block puzzle game!","article_modified_time":"2026-09-04T11:10:48+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/tetratext.com\/wp-content\/uploads\/2026\/09\/tetratext-share-card.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/tetratext.com\/","url":"https:\/\/tetratext.com\/","name":"TetraText - word puzzle with falling letters","isPartOf":{"@id":"https:\/\/tetratext.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tetratext.com\/#primaryimage"},"image":{"@id":"https:\/\/tetratext.com\/#primaryimage"},"thumbnailUrl":"https:\/\/tetratext.com\/wp-content\/uploads\/2026\/09\/tetratext-share-card.png","datePublished":"2026-09-03T22:50:51+00:00","dateModified":"2026-09-04T11:10:48+00:00","description":"Letters fall and you spell your way out. A word puzzle with a falling-block twist: four board sizes, twelve leaderboards. Free on iOS and Android.","breadcrumb":{"@id":"https:\/\/tetratext.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tetratext.com\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tetratext.com\/#primaryimage","url":"https:\/\/tetratext.com\/wp-content\/uploads\/2026\/09\/tetratext-share-card.png","contentUrl":"https:\/\/tetratext.com\/wp-content\/uploads\/2026\/09\/tetratext-share-card.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/tetratext.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tetratext.com\/"},{"@type":"ListItem","position":2,"name":"TetraText"}]},{"@type":"WebSite","@id":"https:\/\/tetratext.com\/#website","url":"https:\/\/tetratext.com\/","name":"TetraText, a unique word block puzzle game!","description":"","publisher":{"@id":"https:\/\/tetratext.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tetratext.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/tetratext.com\/#organization","name":"TetraText, a unique word block puzzle game!","url":"https:\/\/tetratext.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tetratext.com\/#\/schema\/logo\/image\/","url":"https:\/\/tetratext.com\/wp-content\/uploads\/2023\/10\/TetraText-200x200-2.png","contentUrl":"https:\/\/tetratext.com\/wp-content\/uploads\/2023\/10\/TetraText-200x200-2.png","width":200,"height":200,"caption":"TetraText, a unique word block puzzle game!"},"image":{"@id":"https:\/\/tetratext.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/pages\/190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/comments?post=190"}],"version-history":[{"count":14,"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/pages\/190\/revisions"}],"predecessor-version":[{"id":211,"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/pages\/190\/revisions\/211"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/media\/200"}],"wp:attachment":[{"href":"https:\/\/tetratext.com\/index.php\/wp-json\/wp\/v2\/media?parent=190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}