@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: block;
  src: url(assets/fonts/501f76ca195ed9.woff2) format('truetype');
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 700;
  font-display: block;
  src: url(assets/fonts/d02cbe275f68b2.woff2) format('truetype');
}
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 800;
  font-display: block;
  src: url(assets/fonts/33f3233b5edd54.woff2) format('truetype');
}
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url(assets/fonts/7114a75fe286fb.woff2) format('truetype');
}
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 500;
  font-display: block;
  src: url(assets/fonts/3b0c5e09315c26.woff2) format('truetype');
}
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 600;
  font-display: block;
  src: url(assets/fonts/386f6ea0357d0d.woff2) format('truetype');
}
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 700;
  font-display: block;
  src: url(assets/fonts/d43ca9d2b43c72.woff2) format('truetype');
}
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 800;
  font-display: block;
  src: url(assets/fonts/bccf817781978f.woff2) format('truetype');
}
@font-face {
  font-family: 'Nunito';
  font-style: normal;
  font-weight: 900;
  font-display: block;
  src: url(assets/fonts/4f6fb361835e2f.woff2) format('truetype');
}


:root{color-scheme:dark;--bg:#101310;--surface:#191e19;--green:#16cf57;--deep:#108449;--white:#f4f6ee;--muted:#969e94}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--white);font-family:'Nunito',system-ui,sans-serif;-webkit-font-smoothing:antialiased}.topline{height:4px;background:var(--green)}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid var(--green);outline-offset:6px}.masthead{text-align:center;position:relative;max-width:1456px;margin:auto;padding:78px 24px 73px}.masthead p{font-size:19px;color:var(--muted);margin:15px 0 0}.masthead p span{color:var(--white)}.header-doodle{position:absolute;right:9%;top:115px;color:var(--green);font-size:58px;transform:rotate(14deg)}.main{max-width:1456px;margin:auto;padding:0 36px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px;gap:16px}.section-heading h1{font-size:14px;font-weight:600;color:var(--muted);margin:0}.section-heading>span{font-size:11px;letter-spacing:1.7px;text-transform:uppercase;color:#7c877b}.projects{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.project{border:1px solid #ffffff16;border-radius:18px;overflow:hidden;display:block;position:relative;aspect-ratio:8/3;background:var(--surface);transition:transform .22s,border-color .22s,box-shadow .22s;width:100%;padding:0;text-align:left;color:inherit}.project img{display:block;width:100%;height:100%;object-fit:cover}.project:hover{transform:translateY(-5px) rotate(-.35deg);border-color:var(--green);box-shadow:0 10px 30px #0004}.project .open{position:absolute;bottom:10px;right:12px;background:#101310d9;border:1px solid #ffffff25;border-radius:50%;width:29px;height:29px;display:grid;place-items:center;font-size:18px;opacity:0;transform:translateY(5px);transition:.2s}.project:hover .open,.project:focus-visible .open{opacity:1;transform:none}.new{position:absolute;top:10px;left:12px;background:var(--green);color:#082b15;font-size:9px;font-weight:900;letter-spacing:1.5px;padding:4px 8px;border-radius:5px}.endnote{text-align:center;font-size:13px;color:#7f897d;margin:35px 0 0}.endnote span{color:var(--green);margin-right:7px}footer{text-align:center;max-width:1456px;margin:75px auto 0;padding:0 36px}.hello{font-size:23px;font-weight:500;line-height:1.65;margin:0 0 27px}.hello span{color:var(--green)}.socials{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.socials :is(button,a){border:1px solid #354033;border-radius:10px;padding:13px 17px;background:#191e19;color:var(--white);display:flex;align-items:center;gap:10px;font-size:15px;transition:.2s}.socials :is(button,a):hover{border-color:var(--green);background:#1a2b1e}.socials :is(button,a)>span:first-child{font-size:20px;color:var(--green)}.arrow{color:#73816f;font-size:15px;margin-left:8px}.contact{display:block;font-size:14px;margin:27px auto 12px;width:fit-content}.contact span{color:var(--muted)}.contact:hover{color:var(--green)}.privacy{background:none;border:0;color:#899384;font-size:12px;padding:7px}.privacy:hover{color:var(--green)}.footer-bottom{border-top:1px solid #ffffff10;margin-top:51px;padding:22px 0;display:flex;justify-content:space-between;color:#737e70;font-size:11px;letter-spacing:.3px}.green{color:var(--green);margin-left:5px}dialog{background:#1a221a;border:1px solid #3b503b;color:var(--white);border-radius:20px;padding:35px;max-width:440px;width:calc(100% - 40px)}dialog::backdrop{background:#000b;backdrop-filter:blur(5px)}dialog h2{font-size:25px}dialog p{line-height:1.8;color:#b3bdb0;font-size:15px}.close{position:absolute;right:15px;top:10px;border:0;background:none;color:#b3bdb0;font-size:28px}.dialog-star{font-size:36px;color:var(--green)}.dialog-ok{padding:10px 20px;border:0;border-radius:8px;background:var(--green);color:#092e15;font-weight:800;margin-top:10px}@media(min-width:1600px){.masthead{padding-top:90px;padding-bottom:88px}}@media(max-width:1099px){.projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.header-doodle{right:5%;font-size:40px}.main,footer{padding-left:24px;padding-right:24px}}@media(max-width:639px){.projects{grid-template-columns:1fr;gap:16px}.main,footer{padding-left:16px;padding-right:16px}.masthead{padding:55px 16px 47px}.masthead p{font-size:15px;margin-top:12px}.header-doodle{display:none}.section-heading{margin-bottom:15px}.section-heading h1{font-size:12px}.section-heading>span{font-size:9px;letter-spacing:1px}.project{border-radius:14px}.hello{font-size:20px}.socials{display:grid;grid-template-columns:1fr 1fr;gap:10px}.socials :is(button,a){font-size:12px;justify-content:center;padding:12px 8px;gap:7px}.socials .arrow{margin-left:auto}.contact{font-size:12px}footer{margin-top:52px}.footer-bottom{font-size:9px;margin-top:35px}.endnote{font-size:11px;margin-top:25px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Reference-style outlined social links, with local SVG assets. */
.get-posts{position:absolute;z-index:2;top:23px;right:25px;display:flex;align-items:center;gap:10px;padding:10px 15px;border:1.5px solid #61695d;border-radius:14px;background:#191e19;color:var(--white);font-size:19px;font-weight:400;transition:background .2s,border-color .2s}.get-posts:hover{background:#233026;border-color:var(--green)}.get-posts img{display:block;object-fit:contain}.socials{gap:15px}.socials :is(button,a){border:1.5px solid #61695d;border-radius:15px;padding:12px 20px;min-height:64px;background:transparent;font-size:23px;font-weight:400;gap:13px;line-height:1.25}.socials :is(button,a)>span:first-child{font-size:inherit;color:inherit}.socials :is(button,a) img{display:block;object-fit:contain;flex-shrink:0}.socials .accent{color:var(--green)}.socials :is(button,a):hover{border-color:var(--green);background:#1a2b1e}.hello{font-weight:400}.coffee-icon{height:38px;width:28px}.x-icon{margin:0 3px}@media(max-width:1099px){.masthead{padding-top:100px}.get-posts{font-size:16px;top:18px;right:24px}.socials :is(button,a){font-size:20px;padding:11px 17px;min-height:60px}}@media(max-width:639px){.get-posts{top:16px;right:16px;font-size:14px;border-radius:10px;padding:8px 11px;gap:8px}.get-posts img{width:27px;height:21px}.masthead{padding-top:94px}.socials{gap:10px}.socials :is(button,a){font-size:clamp(12px,3.6vw,18px);padding:11px 9px;min-height:58px;gap:9px;border-radius:12px;justify-content:center}.socials :is(button,a) img{width:28px;height:28px}.socials :is(button,a) .coffee-icon{width:22px;height:32px}.socials :is(button,a) .x-icon{width:24px;height:24px;margin:0}.socials :is(button,a):first-child img{width:33px;height:26px}}

@media(max-width:639px){.socials :is(button,a):first-child img{width:22px;height:32px}.socials :is(button,a)[data-pending="Newsletter"] img{width:33px;height:26px}}

/* Compact masthead and minimal footer. */
.masthead{padding:44px 24px 42px}.masthead p{font-size:17px;margin-top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.personal-link{font-size:15px;color:#b7c8c8;font-weight:700}.personal-link:hover{color:var(--green)}.footer-bottom{align-items:center}@media(min-width:1600px){.masthead{padding:44px 24px 42px}}@media(max-width:1099px){.masthead{padding-top:80px;padding-bottom:34px}}@media(max-width:639px){.masthead{padding:78px 16px 29px}.masthead p{font-size:14px;margin-top:8px}.personal-link{font-size:12px}}
/* Match the personal link to the copyright text at every screen size. */
.footer-bottom .personal-link{font-size:inherit;font-weight:inherit;color:inherit}
.footer-bottom .personal-link:hover{color:var(--green)}
.footer-bottom .personal-link{font-size:1.08em}
.contact{position:relative}
.copy-status{position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%);padding:5px 10px;border:1px solid #354033;border-radius:7px;background:#191e19;color:var(--green);font-size:12px;white-space:nowrap;pointer-events:none;opacity:0}
.copy-status.visible{opacity:1}

button.contact{background:none;border:0;padding:0;color:inherit;font-family:inherit}button.contact:hover{color:var(--green)}

.personal-link-center{display:block;width:fit-content;margin:7px auto;font-size:12px;font-weight:400;color:#899384}.footer-bottom .privacy{font-size:inherit;font-weight:inherit;color:inherit;padding:0}.footer-bottom .privacy:hover{color:var(--green)}

.footer-bottom{justify-content:center;gap:7px}.footer-bottom .privacy{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.footer-bottom .privacy{text-decoration-thickness:.5px;text-decoration-color:#737e7080}
/* Let the NEW badge overlap the card corner without clipping the cover. */
.project{overflow:visible}
.project img{border-radius:inherit}
.project .new{top:-12px;left:-10px;width:43px;height:43px;padding:0;display:grid;place-items:center;border-radius:50%;border:2px solid var(--bg);background:var(--green);color:#082b15;font-size:10px;font-weight:900;letter-spacing:.6px;transform:rotate(14deg);z-index:1;box-shadow:0 2px 6px #0003}

.project .new{transform:rotate(-14deg)}

/* Slightly smaller footer buttons. */
.socials :is(button,a){font-size:21px;padding:10px 18px;min-height:59px;gap:12px}.socials :is(button,a) img{width:31px;height:31px}.socials :is(button,a) .coffee-icon{width:25px;height:35px}.socials :is(button,a)[data-pending="Get new posts"] img{width:39px;height:29px}.socials :is(button,a) .x-icon{width:27px;height:27px}@media(max-width:1099px){.socials :is(button,a){font-size:19px;padding:10px 15px;min-height:56px}}@media(max-width:639px){.socials :is(button,a){font-size:clamp(11px,3.4vw,17px);padding:10px 8px;min-height:54px;gap:8px}.socials :is(button,a) .coffee-icon{width:20px;height:30px}.socials :is(button,a)[data-pending="Get new posts"] img{width:30px;height:24px}.socials :is(button,a) img{width:26px;height:26px}.socials :is(button,a) .x-icon{width:22px;height:22px}}
/* Quieter footer typography and slightly more compact social buttons. */
.hello span,.socials .accent{color:inherit}
.socials :is(button,a){font-size:19px;padding:9px 16px;min-height:54px;gap:10px;border-radius:13px}
.socials :is(button,a) img{width:29px;height:29px}
.socials :is(button,a) .coffee-icon{width:23px;height:32px}
.socials :is(button,a)[data-pending="Get new posts"] img{width:36px;height:27px}
.socials :is(button,a) .x-icon{width:25px;height:25px}
@media(max-width:1099px){.socials :is(button,a){font-size:18px;padding:9px 13px;min-height:52px}}
@media(max-width:639px){.socials :is(button,a){font-size:clamp(11px,3.2vw,16px);padding:9px 7px;min-height:50px;gap:7px}.socials :is(button,a) img{width:24px;height:24px}.socials :is(button,a) .coffee-icon{width:19px;height:28px}.socials :is(button,a)[data-pending="Get new posts"] img{width:28px;height:21px}.socials :is(button,a) .x-icon{width:21px;height:21px}}


.socials a{display:flex;align-items:center;cursor:pointer}.socials a:focus-visible{outline:3px solid var(--green);outline-offset:6px}#newsletter{max-width:475px;padding:32px}#newsletter>img{margin-top:4px}#newsletter h2{margin:18px 0 8px;font-size:27px}#newsletter>p{margin:0 0 23px}.email-label{display:block;font-size:13px;font-weight:700;margin-bottom:8px}#subscriber-email{width:100%;padding:13px 14px;border:1px solid #53604e;border-radius:10px;background:#101710;color:var(--white);font:inherit;font-size:16px}#subscriber-email:focus-visible{outline:2px solid var(--green);outline-offset:2px}.consent{display:flex;align-items:flex-start;gap:10px;font-size:13px;line-height:1.6;color:#d1d9cc;margin-top:17px;cursor:pointer}.consent input{accent-color:var(--green);width:17px;height:17px;flex-shrink:0;margin:2px 0 0}.consent small{color:#99a892;font-size:11px}.newsletter-details{margin:19px 0;font-size:12px;color:#a8b5a1}.newsletter-details summary{cursor:pointer;text-decoration:underline;text-underline-offset:3px}.newsletter-details p{font-size:12px;line-height:1.7}.newsletter-submit{width:100%;padding:13px 16px;border:0;border-radius:10px;background:var(--green);color:#092e15;font-weight:800;display:flex;justify-content:space-between;align-items:center}#newsletter .preview-note{font-size:11px;text-align:center;margin:11px 0 0;color:#98a58f}#newsletter-status{font-size:13px;color:var(--white);margin-bottom:0}#newsletter-status:empty{display:none}@media(max-width:639px){#newsletter{padding:25px}}

.privacy-notice-link{text-decoration:underline;text-underline-offset:3px}.privacy-notice-link:hover{color:var(--green)}

#newsletter .privacy-read-note{font-size:12px;line-height:1.6;color:#a8b5a1;margin:14px 0}

#newsletter .privacy-read-note{padding:12px 14px;background:#101710;border:1px solid #354033;border-radius:9px}#newsletter .privacy-read-note strong{font-weight:700;color:var(--white)}#newsletter .consent-heading{font-size:12px;font-weight:700;color:var(--white);margin:18px 0 8px}#newsletter .consent-heading+.consent{margin-top:0}

.project-unlinked{cursor:default}.project-unlinked:hover{transform:none;border-color:#ffffff16;box-shadow:none}.project-unlinked .open{display:none}

/* Home page header spacing. */
.masthead{padding:79px 24px 34px}.masthead p{margin:0}@media(min-width:1600px){.masthead{padding:79px 24px 34px}}@media(max-width:1099px){.masthead{padding:79px 24px 34px}}@media(max-width:639px){.masthead{padding:76px 16px 28px}}

/* Only the home page uses the centered hero wordmark. */
.home-logo{display:inline-block;font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-weight:700;font-size:clamp(34px,4.4vw,58px);line-height:1.1;letter-spacing:-1.8px;color:var(--white);text-decoration:none}.home-logo span{color:var(--green)}.masthead{padding:44px 24px 42px}.masthead p{margin:10px 0 0}@media(min-width:1600px){.masthead{padding:44px 24px 42px}}@media(max-width:1099px){.masthead{padding:80px 24px 34px}}@media(max-width:639px){.masthead{padding:78px 16px 29px}.home-logo{font-size:clamp(29px,7.5vw,44px);letter-spacing:-1.2px}.masthead p{margin-top:8px}}

.socials .google-play-link{justify-content:center;min-width:54px}.socials .google-play-link img{width:29px;height:29px}@media(max-width:639px){.socials .google-play-link{justify-self:center;grid-column:1 / -1;min-width:50px}.socials .google-play-link img{width:25px;height:25px}}

.socials .icon-only-link{width:54px;min-width:54px;padding:9px;justify-content:center;align-items:center;gap:0}.socials .icon-only-link img{display:block;margin:0;object-fit:contain}.socials .icon-only-link .x-icon{margin:0}
@media(max-width:639px){.socials{display:flex;flex-wrap:wrap;justify-content:center;align-items:center}.socials .icon-only-link{width:50px;min-width:50px}.socials .google-play-link{grid-column:auto;justify-self:auto}}

.contact .contact-email{position:relative;display:inline-block;color:inherit}.contact .copy-status{bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);padding:4px 9px;border:1px solid #16cf5755;border-radius:7px;background:#193522f5;color:#a3edb7;font-size:11px;font-weight:700;line-height:1.4;box-shadow:0 3px 12px #0003;z-index:3}.contact .copy-status::after{content:'';position:absolute;left:50%;bottom:-4px;width:6px;height:6px;background:#193522;border-right:1px solid #16cf5755;border-bottom:1px solid #16cf5755;transform:translateX(-50%) rotate(45deg)}

.playground-meta-row{display:flex;align-items:center;justify-content:center;gap:8px;margin:14px 0 0;padding:0 0 28px;border:0;color:#899384;font-size:12px;line-height:1.5}.playground-meta-row .personal-link,.playground-meta-row .privacy{display:inline;font-size:inherit;font-weight:400;line-height:inherit;color:inherit;margin:0;padding:0;width:auto}.playground-meta-row .privacy{text-decoration:underline;text-decoration-thickness:.5px;text-decoration-color:#737e7080;text-underline-offset:3px}.playground-meta-row .personal-link:hover,.playground-meta-row .privacy:hover{color:var(--green)}
.playground-meta-row .personal-link{text-decoration:underline;text-decoration-thickness:.5px;text-decoration-color:#737e7080;text-underline-offset:3px}

.newsletter-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}

/* One search control becomes the active filter when collapsed. */
.project-search-row{display:flex;align-items:center;margin:0 0 22px;min-height:42px}
.project-search{position:relative;max-width:100%;border-radius:12px;background:#16cf5707;color:var(--green)}
#project-search-form{display:flex;align-items:center;position:relative;margin:0;min-height:42px;max-width:100%}
.search-border{position:absolute;inset:0;overflow:visible;pointer-events:none;fill:none;stroke:#16cf5755;stroke-width:1}
.search-border rect{transition:stroke .2s}
.has-filter .search-border{stroke:#16cf5790;stroke-dasharray:5 5}
.has-filter .search-border rect{animation:filter-march 13s linear infinite}
@keyframes filter-march{to{stroke-dashoffset:-100}}
.search-toggle{display:grid;place-items:center;flex:none;width:42px;height:42px;padding:11px;border:0;border-radius:12px;background:transparent;color:var(--green);transition:background .2s}
.search-toggle:hover{background:#16cf5718}
.search-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.search-field{width:0;opacity:0;visibility:hidden;overflow:hidden;transform:translateX(-8px);transition:width .28s cubic-bezier(.2,.8,.2,1),opacity .2s,transform .28s,visibility .28s}
.is-open .search-field{width:min(260px,calc(100vw - 132px));opacity:1;visibility:visible;transform:translateX(0)}
#project-search-input{display:block;width:100%;min-width:0;margin:0;padding:10px 9px 10px 0;border:0;outline:0;background:none;color:var(--white);font:500 16px Nunito,system-ui,sans-serif;line-height:22px;caret-color:var(--green)}
#project-search-input::placeholder{color:#80917c;font-size:13px}
#project-filter-term{min-width:0;max-width:min(45ch,calc(100vw - 144px));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#cfdbca;font-size:13px;font-weight:600;padding-right:7px}
.search-clear{display:grid;place-items:center;flex:none;width:26px;height:26px;margin:0 8px 0 3px;padding:6px;border:1px solid #16cf5760;border-radius:50%;background:#16cf5710;color:#b5d1b3;transition:background .2s,color .2s}
.search-clear:hover{background:#16cf572b;color:var(--white)}
.search-clear svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.project-search-empty{text-align:center;min-height:150px;padding:28px 20px 35px;color:var(--muted)}
.project-search-empty p{margin:0 0 6px;font-size:18px;color:var(--white);font-weight:600}
.project-search-empty>span{font-size:13px}
#project-search[hidden],.search-clear[hidden],#project-filter-term[hidden],.project-search-empty[hidden],#projects>.project[hidden]{display:none!important}
@media(max-width:639px){.project-search-row{margin-bottom:20px}}
@media(prefers-reduced-motion:reduce){.search-field,.search-toggle,.search-clear{transition:none}.has-filter .search-border rect{animation:none}}

/* Separate the collapsed query from its search control. */
.has-filter:not(.is-open) .search-toggle{position:relative;margin-right:9px}
.has-filter:not(.is-open) .search-toggle::after{content:'';position:absolute;right:0;top:12px;bottom:12px;width:1px;background:#16cf5759}
#project-filter-term{border:0;border-radius:0;background:none;text-align:left;font-family:inherit;line-height:22px;padding:0 7px 0 0;cursor:pointer}
#project-filter-term:hover{color:var(--white)}

/* Reveal visually while keeping the input immediately focusable on touch. */
.is-open .search-field{animation:search-reveal .24s ease-out}
@keyframes search-reveal{from{clip-path:inset(0 100% 0 0);opacity:0}to{clip-path:inset(0);opacity:1}}
@media(prefers-reduced-motion:reduce){.is-open .search-field{animation:none}}

/* Search belongs to the centered masthead in every state. */
.masthead .project-search-row{justify-content:center;margin:19px 0 0;min-height:36px}
.masthead .project-search{width:max-content;max-width:100%;border-radius:10px}
.masthead #project-search-form{min-height:36px}
.masthead .search-toggle{width:36px;height:36px;padding:9px;border-radius:10px}
.masthead .search-toggle svg{width:18px;height:18px}
.masthead #project-search-input{padding-top:7px;padding-bottom:7px}
.masthead .search-clear{width:24px;height:24px;margin-right:6px}
.masthead .has-filter:not(.is-open) .search-toggle::after{top:10px;bottom:10px}
.masthead .search-border rect{rx:10px}
@keyframes search-reveal{from{clip-path:inset(0 50%);opacity:0}to{clip-path:inset(0);opacity:1}}

/* Immediate search reveal and optically centered clear glyph. */
.search-field,.is-open .search-field{animation:none!important;transition:none!important;transform:none;clip-path:none}
.masthead .search-clear{display:flex;align-items:center;justify-content:center;padding:0;line-height:1;box-sizing:border-box}
.masthead .search-clear svg{display:block;flex:none;width:12px;height:12px;margin:0}

/* A quieter search control tucked under the tagline on phones. */
@media(max-width:639px){
  .masthead .project-search-row{margin-top:10px;min-height:30px}
  .masthead #project-search-form{min-height:30px}
  .masthead .project-search,.masthead .search-toggle{border-radius:9px}
  .masthead .search-toggle{width:30px;height:30px;padding:7px}
  .masthead .search-toggle svg{width:16px;height:16px}
  .masthead #project-search-input{padding-top:4px;padding-bottom:4px}
  .masthead .search-clear{width:22px;height:22px;margin-right:5px}
  .masthead .search-clear svg{width:11px;height:11px}
  .masthead .search-border rect{rx:9px}
  .masthead .has-filter:not(.is-open) .search-toggle::after{top:8px;bottom:8px}
}

/* Keep the three compact destinations together as one wrapping item. */
.social-icon-group{display:flex;align-items:center;justify-content:center;gap:15px;flex:0 0 auto;white-space:nowrap}
@media(max-width:639px){.social-icon-group{gap:10px}}

.social-icon-group .icon-only-link{height:54px}
.social-icon-group .icon-only-link .x-icon{width:25px;height:25px}
@media(max-width:639px){.social-icon-group .icon-only-link{height:50px}.social-icon-group .icon-only-link .x-icon{width:21px;height:21px}}

/* Subtle footer separator above contact details. */
.contact-divider{height:0;border:0;border-top:1px solid #ffffff12;margin:32px 0 0;width:100%}

/* Keep the footer together and at the bottom of short pages. */
body{min-height:100vh;min-height:100svh;display:flex;flex-direction:column}
.topline,.masthead,.main{flex-shrink:0}
.masthead,.main{width:100%}
footer{width:100%;flex-shrink:0;margin:auto auto 0;padding-top:48px}
footer .hello{margin-bottom:20px}
.contact-divider{margin-top:24px}
footer .contact{margin-top:20px;margin-bottom:10px}
.playground-meta-row{margin-top:10px;padding-bottom:20px}
@media(max-width:639px){footer{margin-top:auto;padding-top:36px}footer .hello{margin-bottom:18px}.contact-divider{margin-top:22px}.playground-meta-row{padding-bottom:18px}}

/* Homepage language choice follows search and basket; homepage copy stays English. */
.home-language{display:flex;align-items:center;gap:2px;flex:none;height:36px;margin:0;padding:4px;border:1px solid #48604099;border-radius:24px;background:#1b261dc9;box-shadow:inset 0 1px 0 #ffffff0a}
.home-language button{display:flex;align-items:center;justify-content:center;width:27px;height:27px;min-width:27px;padding:0;margin:0;border:0;border-radius:50%;background:transparent;line-height:0;cursor:pointer;touch-action:manipulation}
.home-language button[aria-pressed="true"]{background:#2b392b;box-shadow:inset 0 0 0 1px #71836a}
.home-language svg{display:block;flex:none;width:21px;height:21px;border-radius:50%;overflow:hidden;opacity:.35;filter:grayscale(.55)}
.home-language button[aria-pressed="true"] svg,.home-language button:hover svg,.home-language button:focus-visible svg{opacity:1;filter:none}
.masthead .project-search.is-open .search-field{max-width:max(40px,calc(100vw - 270px))}
.masthead #project-filter-term{max-width:min(45ch,max(40px,calc(100vw - 270px)))}
@media(max-width:639px){.home-language{height:30px;padding:2px}.home-language button{width:24px;height:24px;min-width:24px}.home-language svg{width:18px;height:18px}}

/* Give the wordmark more air at small sizes. */
.home-logo{font-weight:700;letter-spacing:-1px}

.brand-font-loading .home-logo,.brand-font-loading .policy-logo,.brand-font-loading .site-logo,.brand-font-loading .compact-game-header h1{visibility:hidden}

/* No browser focus or tap rings after interacting, on desktop or touch. */
*:focus,*:focus-visible{outline:none!important}*{-webkit-tap-highlight-color:transparent}

/* Fine-pointer hover only; no layout shift, new focus ring or basket treatment. */
@media(hover:hover) and (pointer:fine){
 button:not(:disabled):not(:active):not(#open-tool-basket):not(.basket-launcher):hover{filter:brightness(1.09)}
 a:not(.basket-launcher):not(#open-tool-basket):hover{filter:brightness(1.1)}
 summary:hover{filter:brightness(1.14)}
 input:not([type=range]):not([type=checkbox]):hover,select:hover{border-color:#8caa9180}
}
