:root{--text:#002730;--muted:#5c5c5c;--surface:#fff;--line:#d8d8d8;--line-strong:#767676;--focus:#0b3d6e;--bg:#f1f1f1;--accent:#14508c;--good:#13b15a;--mid:#f59e0b;--bad:#a32020;--good-text:#0b7a3b;--mid-text:#b45309;--site-header-height:104px;--header-surface:#ffffff38;--header-border:#ffffff52;--content-glass:#ffffffbf;--content-glass-border:#1a1a1a14}:root[data-theme=dark]{--text:#f0f8ff;--muted:#dfeeff;--surface:#09131a;--line:#ffffff2e;--line-strong:#ffffff6b;--focus:#8ec5ff;--bg:#02080d;--accent:#dfefff;--good:#18fb6c;--mid:#ffab1c;--bad:#ff3030;--good-text:var(--good);--mid-text:var(--mid);--header-surface:#ffffff14;--header-border:#ffffff2e;--content-glass:#0e161e85;--content-glass-border:#ffffff38}*{box-sizing:border-box}body{font-family:var(--font-noto-sans), "Noto Sans", system-ui, -apple-system, "Segoe UI", sans-serif;color:var(--text);background:var(--bg);background:linear-gradient(135deg,#f1e6d5 0%,#dfeaf5 48%,#dfe6bd 100%);flex-direction:column;min-height:100vh;margin:0;font-size:100%;line-height:1.55;display:flex;overflow-x:hidden}:root[data-theme=dark] body{color:#f0f8ff;background:linear-gradient(to bottom right,#000,#4e667e 48%,#4d356d)!important}body:has(.apps-search-page){background:linear-gradient(135deg,#f1e6d5 0%,#dfeaf5 48%,#dfe6bd 100%)!important}body:has(.app-page){background-color:#4267b2}:root[data-theme=dark] body:has(.app-page){background:linear-gradient(to bottom right,#000,#4e667e 48%,#4d356d)!important}:root[data-theme=dark] body:has(.app-page) .site-header *{color:#f0f8ff}body:has(.app-page) .site-header *{color:#000;font-size:1rem}body:has(.app-page) .site-header .site-title{font-size:1.25rem!important}main{flex:1 0 auto;width:100%;max-width:60rem;margin:0 auto}.content-wrapper{background:linear-gradient(135deg, var(--header-surface), #ffffff14);border:1px solid var(--header-border);-webkit-backdrop-filter:saturate(180%);backdrop-filter:saturate(180%);border-radius:1.2rem;width:100%;max-width:72rem;margin:0 auto;padding:2.25rem 2.5rem 2.75rem;box-shadow:0 12px 40px #00000014,inset 0 1px 1px #ffffff80,inset 0 -1px 1px #ffffff1f}:root[data-theme=dark] .content-wrapper{background:var(--content-glass)}.content-wrapper+.content-wrapper{margin-top:2rem}.content-wrapper>:first-child{margin-top:0}.content-wrapper>:last-child{margin-bottom:0}.content-wrapper h1,.content-wrapper h2,.content-wrapper h3{font-width:120%;max-width:52rem}.content-wrapper .lede{max-width:52rem}a{color:var(--accent)}.site-header{z-index:2;background:linear-gradient(135deg, var(--header-surface), #ffffff14);-webkit-backdrop-filter:blur(30px)saturate(180%);border:1px solid var(--header-border);border-radius:50px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:60rem;padding:20px 28px;display:flex;position:relative;box-shadow:0 12px 40px #00000024,inset 0 1px 1px #ffffff80,inset 0 -1px 1px #ffffff1a;margin:40px auto!important}.site-header-tools{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.site-header a{color:#000;text-decoration:none}:root[data-theme=dark] .site-header a,:root[data-theme=dark] .site-header a:visited,:root[data-theme=dark] .site-header a:hover,:root[data-theme=dark] .site-header a:focus{color:#f0f8ff}.site-title{font-family:var(--font-roboto-mono), "Roboto Mono", "SFMono-Regular", Consolas, monospace;color:var(--text);text-shadow:0 0 10px #f0f8ff66;letter-spacing:1.5px;font-weight:500;text-decoration:none}.site-header .site-title{font-size:1.25rem}.site-header .site-title strong{letter-spacing:1px;font-size:1.25rem!important}.theme-toggle{z-index:1000;appearance:none;border:1px solid var(--header-border);background:linear-gradient(135deg, var(--header-surface), #ffffff14);color:var(--text);font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(30px)saturate(180%);border-radius:999px;padding:.6rem .9rem;font-size:.85rem;transition:transform .2s,opacity .2s;position:fixed;bottom:1.25rem;right:1.25rem;box-shadow:0 12px 30px #0000002e}:root[data-theme=dark] .theme-toggle{background:var(--content-glass)}.theme-toggle:hover{transform:translateY(-1px)}.theme-wipe-overlay{z-index:9999;pointer-events:none;clip-path:circle(0 at var(--theme-origin-x) var(--theme-origin-y));opacity:1;background:linear-gradient(135deg,#f1e6d5 0%,#dfeaf5 48%,#dfe6bd 100%);transition:clip-path .72s cubic-bezier(.16,1,.3,1),opacity .16s .56s;position:fixed;inset:0}.theme-wipe-overlay[data-theme=dark]{background:linear-gradient(to bottom right,#000,#4e667e 48%,#4d356d)}.theme-wipe-overlay.is-animating{clip-path:circle(160vmax at var(--theme-origin-x) var(--theme-origin-y))}.theme-wipe-overlay.is-finished{opacity:0}@media (prefers-reduced-motion:reduce){.theme-wipe-overlay{transition:none}}.site-title strong{font-family:var(--font-roboto-mono), "Roboto Mono", "SFMono-Regular", Consolas, monospace;font-weight:700}.site-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:1rem;display:flex}.site-nav-toggle{display:none}.site-header nav a,.site-nav a{font-width:120%}.site-footer{color:#edf3ff;background:radial-gradient(circle at 0 0,#7c5cff40,#0000 34%),linear-gradient(#0d111a 0%,#090d14 100%);border-top:1px solid #ffffff24;border-radius:1.5rem 1.5rem 0 0;width:min(100%,60rem);margin:4rem auto 0;padding:clamp(1.5rem,3vw,2.5rem);box-shadow:0 -1rem 2.5rem #0000002e}.site-footer *{color:inherit}.site-footer-grid{grid-template-columns:1.6fr repeat(3,minmax(0,1fr));gap:2rem;display:grid}.site-footer-brand{gap:.8rem;display:grid}.site-footer-brand p{color:#edf3ffd1;max-width:28rem;margin:0;line-height:1.6}.site-footer-title{font-size:1.05rem}.site-footer-column{align-content:start;gap:.8rem;display:grid}.site-footer-column h2{color:#edf3ffb8;letter-spacing:.1em;text-transform:uppercase;border:0;margin:0;padding:0;font-size:.72rem;font-weight:700}.site-footer-column nav{gap:.5rem;display:grid}.site-footer-column a,.site-footer-column nav a{color:#edf3ffeb;text-decoration:none;transition:opacity .12s}.site-footer-column a:hover,.site-footer-column nav a:hover{opacity:.8;text-decoration:underline}.site-footer-meta{border-top:1px solid #ffffff1f;margin-top:1.5rem;padding-top:1.5rem}.site-owner{color:#edf3ffb8;margin:0;line-height:1.6}:root:not([data-theme=dark]) .site-footer{color:#132338;background:radial-gradient(circle at 0 0,#c1caed33,#0000 38%),linear-gradient(#f4f7ff 0%,#edf2fb 100%);border-top-color:#0b19261f;box-shadow:0 -.75rem 2rem #0f172a14}:root:not([data-theme=dark]) .site-footer *{color:inherit}:root:not([data-theme=dark]) .site-footer-brand p,:root:not([data-theme=dark]) .site-footer-column h2,:root:not([data-theme=dark]) .site-footer-column a,:root:not([data-theme=dark]) .site-footer-column nav a,:root:not([data-theme=dark]) .site-owner{color:#132338cc}:root:not([data-theme=dark]) .site-footer-meta{border-top-color:#0b19261f}@media (max-width:767px){.site-header{z-index:30;border-radius:1.25rem;max-width:96vw;padding:.9rem 1rem;position:relative}.site-header-tools{z-index:31;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.75rem;display:flex;position:relative}.site-nav-toggle{z-index:32;border:1px solid var(--header-border);width:2.75rem;height:2.75rem;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(18px)saturate(150%);background:#ffffff1f;border-radius:999px;flex-direction:column;flex-shrink:0;justify-content:center;gap:.28rem;padding:.55rem;transition:transform .16s;display:inline-flex;position:relative;box-shadow:0 10px 30px #0000001f}.site-nav-toggle.is-open{transform:rotate(180deg)}.site-nav-toggle span{transform-origin:50%;background:currentColor;border-radius:999px;width:100%;height:2px;transition:transform .18s,opacity .18s;display:block}.site-nav-toggle.is-open span:first-child{transform:translateY(6px)rotate(45deg)}.site-nav-toggle.is-open span:nth-child(2){opacity:0}.site-nav-toggle.is-open span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}.site-nav{-webkit-backdrop-filter:blur(22px)saturate(160%);opacity:0;pointer-events:none;visibility:hidden;z-index:40;background:#fffefbeb;border:1px solid #ffffff38;border-radius:1.1rem;flex-direction:column;align-items:stretch;gap:.1rem;width:min(18rem,100vw - 2rem);padding:.55rem;transition:opacity .18s,transform .18s,visibility 0s linear .18s;display:flex;position:absolute;top:calc(100% + .8rem);right:0;transform:translateY(-8px);box-shadow:0 18px 38px #0000002e,inset 0 1px #ffffff38}:root[data-theme=dark] .site-nav{background:#191c29eb}.site-nav.is-open{opacity:1;pointer-events:auto;visibility:visible;transition-delay:0s;transform:translateY(0)}.site-nav a{width:100%;color:var(--text);border:1px solid #0000;border-radius:.7rem;padding:.7rem .9rem;text-decoration:none;transition:background .12s,border-color .12s;display:block}.site-nav a:hover,.site-nav a:focus-visible{background:#ffffff14;border-color:#ffffff1f}.site-footer-grid{grid-template-columns:1fr}.content-wrapper{border-radius:1rem;max-width:min(100%,60rem);padding:1.25rem 1rem 1.5rem}main{max-width:min(100%,60rem);padding:0 .75rem 2.5rem}}h1,h2,h3,h4,h5,h6,p,span,a,button,input,textarea,select,li,label,small,strong,code{font-family:var(--font-noto-sans), "Noto Sans", system-ui, -apple-system, "Segoe UI", sans-serif}h1{margin-bottom:.25rem;font-size:1.7rem}h2{border-bottom:1px solid var(--line);margin-top:2rem;padding-bottom:.25rem;font-size:1.2rem}h3{margin-top:1.5rem;font-size:1rem}.lede{color:var(--muted);margin-top:0}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.4rem .5rem}th{font-weight:600}.score{font-variant-numeric:tabular-nums;font-weight:700}.score-good{color:var(--good-text)}.score-mid{color:var(--mid-text)}.score-bad{color:var(--bad)}.badge{border:1px solid var(--line);color:var(--muted);border-radius:.2rem;padding:.05rem .4rem;font-size:.75rem;display:inline-block}.fact{margin:0 0 .75rem}.fact dt{font-weight:600}.fact dd{margin:0 0 .5rem}.sources{color:var(--muted);font-size:.8rem}.sources ol{margin:.25rem 0 0;padding-left:1.2rem}.grid{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.75rem;padding:0;list-style:none;display:grid}.card{padding:.75rem}.card h3{margin:0 0 .25rem;font-size:1rem}.meta{color:var(--muted);font-size:.85rem}.unknown{color:var(--muted);font-style:italic}ul.plain{padding:0;list-style:none}.filters{flex-wrap:wrap;gap:.5rem;margin:1rem 0;font-size:.85rem;display:flex}.with-logo{align-items:center;gap:.5rem;display:inline-flex}.logo{border-radius:22.5%;flex-shrink:0}.logo.appgrid-logo{box-shadow:0 0 16px -10px #000!important}.scroller{max-width:100%;overflow-x:auto}.dataset{margin:2rem 0}.dataset .meta{margin-top:-.5rem}.skip-link{z-index:10;background:var(--bg);color:var(--accent);border:2px solid var(--focus);border-radius:0 0 4px;padding:.6rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}:focus{outline:3px solid var(--focus);outline-offset:2px}:focus:not(:focus-visible){outline:none}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}main:focus{outline:none}img,svg,table{max-width:100%}p,li,dd,td,th{overflow-wrap:break-word}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.site-header nav a[aria-current=page]{text-underline-offset:.25em;font-weight:700;text-decoration:underline}.scroller:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.badge{border-color:var(--line-strong)}@media (max-width:30rem){main{padding:1rem .75rem 3rem}.site-header,.site-footer{padding:.75rem}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}h1.branded{border-bottom:3px solid var(--brand);padding-bottom:.3rem}.applinks ul{flex-wrap:wrap;gap:.4rem;margin:1rem 0;padding:0;list-style:none;display:flex}.applink{border:1px solid var(--line);border-radius:.2rem;padding:.25rem .6rem;font-size:.85rem;text-decoration:none;display:inline-block}.applink:hover,.applink:focus-visible{text-decoration:underline}.applink.action{border-color:var(--brand,currentColor);font-weight:600}main>.apps-page-hero{z-index:1;width:100vw;min-height:clamp(30rem,40vh,42rem);margin:calc(-1 * var(--site-header-height)) 0 1.5rem -50vw;flex-direction:column;justify-content:center;align-items:center;padding:clamp(4rem,7vh,6rem) 1rem clamp(2rem,4vh,3rem);display:flex;position:relative;left:50%;overflow:hidden}main>.apps-page-hero:before{content:"";pointer-events:none;position:absolute;inset:0}.apps-page-hero>*{z-index:1;text-align:center;width:min(100%,80vw);margin-left:auto;margin-right:auto;padding-left:clamp(1rem,2vw,2rem);padding-right:clamp(1rem,2vw,2rem);position:relative}.data-flow-animation{z-index:0;pointer-events:none;opacity:.9;position:absolute;inset:0;overflow:hidden}.data-flow-animation svg{width:100%;height:100%;min-height:100%;display:block}.data-flow-link{fill:none;stroke:#14508c2e;stroke-linecap:round;stroke-linejoin:round;opacity:.9}.data-flow-node{fill:#14508c47}.data-flow-node-glow{fill:#14508c1f;animation:6s ease-in-out infinite alternate dataFlowPulse}.data-flow-packet{fill:#fffffff5;filter:drop-shadow(0 0 10px #fffc);animation:2.4s ease-in-out infinite alternate dataFlowPacketPulse}.data-flow-packet-path{fill:none;stroke:#0000}@keyframes dataFlowPulse{0%{opacity:.35;transform-origin:50%;transform:scale(.92)}to{opacity:.8;transform-origin:50%;transform:scale(1.08)}}@keyframes dataFlowPacketPulse{0%{opacity:.6}to{opacity:1}}@media (max-width:48rem){.data-flow-animation{opacity:.7}.data-flow-link{stroke:#14508c17}}@media (prefers-reduced-motion:reduce){.data-flow-animation{opacity:.45}.data-flow-packet,.data-flow-node,.data-flow-link,.data-flow-node-glow{animation:none!important}}.apps-page-hero .meta{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 .5rem}.apps-page-hero h1{letter-spacing:-.05em;margin:0;font-size:clamp(2.6rem,5vw,5rem);line-height:.94}.apps-page-hero .lede{color:#1a1a1acc;max-width:48rem;margin:1rem auto 0;font-size:1.04rem;line-height:1.55}:root[data-theme=dark] .apps-page-hero .lede{color:#f0f8ff}.apps-search{margin:2rem 0}.apps-search input{width:100%;font:inherit;border:1px solid var(--line);z-index:2;background:linear-gradient(135deg, var(--header-surface), #ffffff14);-webkit-backdrop-filter:blur(30px)saturate(180%);border:1px solid var(--header-border);border-radius:50px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:60rem;padding:.75rem 1rem;display:flex;position:relative;box-shadow:0 12px 40px #00000024,inset 0 1px 1px #ffffff80,inset 0 -1px 1px #ffffff1a}.apps-search input::placeholder{color:var(--text);font-width:125%}.apps-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;display:grid}.app-card{min-height:160px;color:inherit;text-align:center;border-radius:.75rem;flex-direction:column;justify-content:start;align-items:center;gap:.75rem;padding:1.5rem 1rem;text-decoration:none;transition:transform .15s;display:flex}.app-card:hover{transform:translateY(-2px)}.app-card span{font-width:125%;font-weight:600}.apps-empty{color:var(--muted);margin-top:2rem}.text-page{width:100%;max-width:72rem;margin:0 auto;padding:2.5rem 3.75rem 5rem}.text-page>h1{letter-spacing:-.035em;border:0;max-width:48rem;margin:0;padding:0;font-size:clamp(2rem,4vw,3.2rem);line-height:1.08}.text-page>.lede{max-width:48rem;color:var(--muted);margin:.75rem 0 2.5rem;font-size:1rem;line-height:1.55}.text-page>h1+p:not(.lede){max-width:48rem;margin-top:2rem;margin-bottom:3rem;font-size:1.15rem;line-height:1.7}.text-page>p,.text-page>div>p{max-width:48rem;line-height:1.7}.text-page>p{margin-top:1rem;margin-bottom:1.25rem}.text-page p{overflow-wrap:break-word}.text-page>h2{border-bottom:1px solid var(--line);letter-spacing:-.015em;font-width:125%;max-width:52rem;margin:4rem 0 1.5rem;padding:0 0 .65rem;font-size:clamp(1.35rem,2vw,1.65rem);line-height:1.25}.text-page>h2:first-of-type{margin-top:3rem}.text-page>h3{max-width:48rem;margin:2.25rem 0 .5rem;font-size:1.05rem;line-height:1.35}.text-page>h3+p{margin-top:0}.text-page>div>h3{max-width:48rem;margin:2rem 0 .5rem;font-size:1.05rem;line-height:1.35}.text-page>div>h3+p{max-width:48rem;color:var(--text);margin-top:0;line-height:1.7}.text-page>div:has(>h3){margin-bottom:1.75rem}.text-page ul,.text-page ol{max-width:48rem;padding-left:1.5rem;line-height:1.7}.text-page li{margin-bottom:.5rem}.text-page li:last-child{margin-bottom:0}.text-page .scroller{border:1px solid var(--line);background:var(--bg);max-width:64rem;margin:1.25rem 0 2.5rem}.text-page table{border-collapse:collapse;width:100%;min-width:36rem;font-size:.9rem}.text-page th,.text-page td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.8rem 1rem}.text-page th{background:color-mix(in srgb, var(--line) 35%, transparent);color:var(--text);font-weight:700}.text-page tbody tr:last-child td{border-bottom:0}.text-page tbody tr:hover{background:color-mix(in srgb, var(--line) 18%, transparent)}.text-page th:nth-child(2),.text-page td:nth-child(2){white-space:nowrap;font-variant-numeric:tabular-nums}.text-page td.meta{color:var(--muted);font-size:.88rem}.text-page>h2+div{margin-top:0}.text-page>div>.scroller{margin-top:1rem}.text-page>div>h3+.scroller{margin-bottom:2.5rem}.text-page>h2+p+p{margin-top:1rem}.text-page strong{font-weight:700}.text-page em{color:var(--muted)}.text-page a{text-underline-offset:.18em;text-decoration-thickness:1px}.text-page a:hover{text-decoration-thickness:2px}.text-page .unknown{background:color-mix(in srgb, var(--line) 25%, transparent);border-radius:.6rem;max-width:48rem;margin-top:1.5rem;padding:1rem 1.25rem}@media (max-width:48rem){.text-page{padding:2rem 1.5rem 4rem}.text-page>h1{font-size:2.2rem}.text-page>h2{margin-top:3rem}.text-page .scroller{margin-left:0;margin-right:0}}@media (max-width:30rem){.text-page{padding:1.5rem .75rem 3rem}.text-page>h1{font-size:1.9rem}.text-page>.lede{margin-bottom:2rem}.text-page>h2{margin-top:2.5rem;font-size:1.3rem}.text-page>h3,.text-page>div>h3{font-size:1rem}.text-page .scroller{width:100%}.text-page th,.text-page td{padding:.7rem .75rem}}@view-transition{navigation:auto}::view-transition{pointer-events:none}::view-transition-old(*){animation-duration:.22s;animation-timing-function:ease-out}::view-transition-new(*){animation-duration:.22s;animation-timing-function:ease-out}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}::view-transition-group(*){animation:none!important}}
