@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-vietnamese-400-normal-BF4g3tCF.woff2)format("woff2"),url(/assets/archivo-vietnamese-400-normal-FGOLYM1a.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-ext-400-normal-B5tPZzqW.woff2)format("woff2"),url(/assets/archivo-latin-ext-400-normal-DrmqtLj6.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2)format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-vietnamese-500-normal-k0drYPZA.woff2)format("woff2"),url(/assets/archivo-vietnamese-500-normal-7W3lD2kQ.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-ext-500-normal-RFhg4CpD.woff2)format("woff2"),url(/assets/archivo-latin-ext-500-normal-D7mXw3Kz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-500-normal-CGugC8dq.woff2)format("woff2"),url(/assets/archivo-latin-500-normal-pkzA7jw9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-vietnamese-600-normal-anCjMumA.woff2)format("woff2"),url(/assets/archivo-vietnamese-600-normal-C8xBVdfP.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-ext-600-normal-Dm61iqcg.woff2)format("woff2"),url(/assets/archivo-latin-ext-600-normal-D7uErJuz.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2)format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-vietnamese-700-normal-nuAQAQa7.woff2)format("woff2"),url(/assets/archivo-vietnamese-700-normal-Bz2vkKqq.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-ext-700-normal-DD_nkw6b.woff2)format("woff2"),url(/assets/archivo-latin-ext-700-normal-CgyfnKjw.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-700-normal-D9cHMWGj.woff2)format("woff2"),url(/assets/archivo-latin-700-normal-lT5TFe7H.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.app{--bg:#fff;--bg-2:#f4f4f5;--bg2:#f4f4f5;--bg-side:#fafafa;--surface:#fff;--raised:#fff;--text:#18181b;--muted:#52525b;--faint:#71717a;--line:#e4e4e7;--line2:#d4d4d8;--signal:#e2461a;--signal-ink:#c2410c;--signal-bg:#fff4ed;--tide:#4f74c9;--tide-ink:#35579e;--tide-bg:#eef3fc;--ok:#15803d;--ok-bg:#ecfdf3;--danger:#b42318;--danger-bg:#fef3f2;--moon:#ede4cf;--lit:#18181b;--inv:#fff;--on-signal:#fff;--r:2px;--shadow-xs:0 1px 2px #18181b0d;--shadow-md:0 1px 2px #18181b0a, 0 6px 16px -4px #18181b14;--sans:"Archivo", system-ui, sans-serif;--mono:"Archivo", system-ui, sans-serif;--code:"IBM Plex Mono", ui-monospace, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.app[data-theme=dark]{--bg:#0c0c0e;--bg-2:#18181b;--bg2:#18181b;--bg-side:#0f0f11;--surface:#121214;--raised:#27272a;--text:#f4f4f5;--muted:#a1a1aa;--faint:#8b8b94;--line:#26262a;--line2:#3f3f46;--signal:#ff5a24;--signal-ink:#ff7a4d;--signal-bg:#2a1509;--tide:#8fb0f5;--tide-ink:#9fbcf7;--tide-bg:#121a2c;--ok:#4ade80;--ok-bg:#0d2417;--danger:#f87171;--danger-bg:#2a1214;--moon:#ede4cf;--lit:#ede4cf;--inv:#0c0c0e;--on-signal:#0c0c0e;--shadow-xs:none;--shadow-md:0 8px 24px -6px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){.app[data-theme=system]{--bg:#0c0c0e;--bg-2:#18181b;--bg2:#18181b;--bg-side:#0f0f11;--surface:#121214;--raised:#27272a;--text:#f4f4f5;--muted:#a1a1aa;--faint:#8b8b94;--line:#26262a;--line2:#3f3f46;--signal:#ff5a24;--signal-ink:#ff7a4d;--signal-bg:#2a1509;--tide:#8fb0f5;--tide-ink:#9fbcf7;--tide-bg:#121a2c;--ok:#4ade80;--ok-bg:#0d2417;--danger:#f87171;--danger-bg:#2a1214;--moon:#ede4cf;--lit:#ede4cf;--inv:#0c0c0e;--on-signal:#0c0c0e;--shadow-xs:none;--shadow-md:0 8px 24px -6px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}html,body{margin:0}body{background:#fff}body:has(.app[data-theme=dark]){background:#0c0c0e}@media (prefers-color-scheme:dark){body:has(.app[data-theme=system]){background:#0c0c0e}}.app{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--sans);letter-spacing:-.003em;font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased;isolation:isolate;font-size:15px;line-height:1.55;position:relative;container:app/inline-size}.app *,.app :before,.app :after{box-sizing:border-box}.app a:not(.btn){color:var(--tide-ink);text-underline-offset:3px;text-decoration-thickness:1px}.app :focus-visible{outline:2px solid var(--tide);outline-offset:2px;border-radius:var(--r)}.app h1,.app h2,.app h3,.app p,.app ul,.app ol{margin:0}.mono{font-family:var(--code);font-size:.92em}.label{font:500 12.5px/1.4 var(--sans);letter-spacing:0;text-transform:none;color:var(--muted)}.label b{color:var(--signal-ink);font-weight:600}:is(.label:has(+.display),.label:has(+h1)){display:none}.display{letter-spacing:-.022em;font-size:32px;font-weight:600;line-height:1.15}.h2{letter-spacing:-.015em;font-size:22px;font-weight:600;line-height:1.25}.h3{letter-spacing:-.008em;font-size:16px;font-weight:600;line-height:1.35}.lede{color:var(--muted);max-width:620px;font-size:16px;line-height:1.55}.muted{color:var(--muted)}.small{font-size:13.5px}.num{font:400 13px/1.35 var(--sans);font-variant-numeric:tabular-nums;color:var(--muted)}.big-num{font:500 52px/1 var(--sans);letter-spacing:-.035em;font-variant-numeric:tabular-nums}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.i{vertical-align:middle;flex:none;width:16px;height:16px}.i-lg{width:20px;height:20px}.frame{z-index:1;min-height:100vh;display:flex;position:relative}.side{background:var(--bg-side);border-right:1px solid var(--line);flex-direction:column;flex:0 0 248px;gap:20px;padding:20px 12px;display:flex}.brand{color:var(--text);align-items:center;gap:10px;padding:4px 8px;text-decoration:none;display:flex}.app a.brand{color:var(--text);text-decoration:none}.brand-word{letter-spacing:-.012em;font-size:15px;font-weight:600;line-height:1.15}.brand-sub{font:400 12px/1.35 var(--sans);letter-spacing:0;color:var(--muted);text-transform:none;display:block}.client-tag{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow-xs);align-items:center;gap:10px;padding:8px;display:flex}.client-mark{background:var(--text);width:30px;height:30px;color:var(--inv);font:600 11.5px/1 var(--sans);border-radius:var(--r);flex:none;place-items:center;display:grid}.nav{flex-direction:column;gap:1px;display:flex}.app .nav a{min-height:36px;color:var(--muted);border-radius:var(--r);align-items:center;gap:10px;padding:7px 10px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.app .nav a:hover{color:var(--text);background:var(--bg-2)}.nav a>svg{flex:none;width:18px;height:18px}.app .nav a[aria-current=page]{color:var(--text);background:var(--raised);box-shadow:var(--shadow-xs), 0 0 0 1px var(--line)}.nav .count{font:500 11.5px/1 var(--sans);border-radius:var(--r);background:var(--bg-2);color:var(--muted);margin-left:auto;padding:3px 7px}.nav .count.hot{background:var(--signal-ink);color:var(--on-signal)}.side-foot{flex-direction:column;gap:12px;margin-top:auto;padding:0 8px;display:flex}.main{flex-direction:column;flex:1 1 0;min-width:0;display:flex}.top{border-bottom:1px solid var(--line);background:var(--bg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;min-height:56px;padding:0 40px;display:flex}.top-right{align-items:center;gap:8px;display:flex}.content{width:100%;max-width:1180px;padding:40px 40px 96px}.mtop{z-index:1;border-bottom:1px solid var(--line);background:var(--bg);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:none;position:relative}.tabbar{z-index:5;border-top:1px solid var(--line);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);display:none;position:sticky;bottom:0}.app .tabbar a,.tabbar button{min-height:58px;color:var(--faint);font:500 11px/1 var(--sans);letter-spacing:0;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:4px;text-decoration:none;display:flex;position:relative}.tabbar a>svg,.tabbar button>svg{width:22px;height:22px}.app .tabbar [aria-current=page],.tabbar .on{color:var(--text)}.tabbar [aria-current=page]:before,.tabbar .on:before{content:"";background:var(--text);border-radius:2px;height:2px;position:absolute;top:-1px;left:30%;right:30%}.tabbar .dot{background:var(--signal-ink);min-width:16px;height:16px;color:var(--on-signal);font:600 10px/16px var(--sans);text-align:center;border-radius:8px;padding:0 4px;position:absolute;top:8px;left:calc(50% + 6px)}.menu-sheet{z-index:30;background:color-mix(in srgb, var(--text) 30%, transparent);justify-content:flex-end;display:flex;position:fixed;inset:0}.menu-sheet>div{background:var(--bg);border-left:1px solid var(--line);flex-direction:column;gap:16px;width:min(320px,86vw);height:100%;padding:16px 12px;display:flex;overflow-y:auto}.btn{border:1px solid var(--line2);border-radius:var(--r);background:var(--surface);min-height:40px;color:var(--text);font:500 14px/1 var(--sans);cursor:pointer;white-space:nowrap;box-shadow:var(--shadow-xs);justify-content:center;align-items:center;gap:8px;padding:0 16px;text-decoration:none;transition:background .15s,border-color .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--bg-2);border-color:var(--line2)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--text);color:var(--inv);border-color:var(--text)}.btn-primary:hover{background:var(--text);opacity:.9}.btn-quiet{border-color:var(--line);box-shadow:none}.btn-sm{border-radius:var(--r);min-height:34px;padding:0 12px;font-size:13.5px}.btn-text{min-height:34px;color:var(--tide-ink);box-shadow:none;background:0 0;border:0;padding:0 4px}.btn-text:hover{background:0 0;text-decoration:underline}.btn:disabled,.btn[disabled],.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.icon-btn{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);width:40px;height:40px;color:var(--text);cursor:pointer;place-items:center;text-decoration:none;display:inline-grid;position:relative}.app a.icon-btn{color:var(--text)}.icon-btn:hover{background:var(--bg-2)}.icon-btn .badge{background:var(--signal);width:7px;height:7px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:7px;right:7px}.avatar{background:var(--bg-2);border:1px solid var(--line);width:34px;height:34px;font:600 12px/1 var(--sans);color:var(--text);border-radius:50%;flex:none;place-items:center;display:inline-grid}.avatar.lg{width:56px;height:56px;font-size:18px}.avatar.sm{width:22px;height:22px;font-size:9.5px}.avatar.mb{background:var(--text);color:var(--inv);border-color:var(--text)}.rule{border:0;border-top:1px solid var(--line);margin:0}.sec{border-top:1px solid var(--line);padding-top:20px}.sec-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-xs)}.well{background:var(--bg-2);border-radius:var(--r)}.tile{border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2);width:40px;height:40px;font:600 11px/1 var(--sans);letter-spacing:.01em;color:var(--text);flex:none;place-items:center;display:grid}.tile.lg{width:56px;height:56px;font-size:14px}.shot{border:1px dashed var(--line2);border-radius:var(--r);background:var(--bg-2);color:var(--muted);font:500 12.5px/1.4 var(--sans);aspect-ratio:16/9;justify-content:center;align-items:center;gap:8px;display:flex;overflow:hidden}.shot img{object-fit:cover;width:100%;height:100%}.chip{--sgc:currentColor;min-height:20px;font:500 11px/1.2 var(--code);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:var(--text);background:0 0;border:0;border-radius:0;align-items:center;gap:7px;padding:0;display:inline-flex}.chip>.sg,.sg{width:14px;height:14px;color:var(--sgc,currentColor);vertical-align:middle;flex:none}.chip>.i{width:13px;height:13px}.st-none{--sgc:var(--faint);color:var(--muted)}.st-progress{--sgc:var(--tide)}.st-waiting{--sgc:var(--muted)}.st-checking{--sgc:var(--tide)}.st-checking>.sg{animation:1.1s linear infinite mc-spin}.st-verified{--sgc:var(--ok)}.st-verified>.sg{animation:.5s ease-out mc-pop}.st-issue{--sgc:var(--danger);color:var(--danger)}.st-skip{--sgc:var(--faint);color:var(--faint);text-decoration:line-through;-webkit-text-decoration-color:var(--line2);text-decoration-color:var(--line2)}.st-risk{--sgc:var(--signal);color:var(--signal-ink)}.st-track{--sgc:var(--ok)}.st-late{--sgc:var(--danger);color:var(--danger)}.tag{font:500 13px/1.2 var(--sans);letter-spacing:0;text-transform:none;color:var(--muted);align-items:center;gap:6px;display:inline-flex}.late{color:var(--danger);font-weight:600}.cells{grid-template-columns:repeat(var(--cells,19), minmax(0, 1fr));gap:3px;display:grid}.cell{background:var(--bg-2);border:1px solid var(--line);border-radius:3px;height:12px}.cell.ok{background:var(--ok);border-color:var(--ok)}.cell.skip{background:repeating-linear-gradient(135deg, var(--line2) 0 1px, transparent 1px 4px);border-color:var(--line2)}.cell.chk{background:var(--tide);border-color:var(--tide)}.cell.bad{background:var(--danger);border-color:var(--danger)}.cell.prog{background:var(--tide-bg);border-color:var(--tide)}.bar{background:var(--bg-2);border-radius:3px;height:6px;overflow:hidden}.bar>span{background:var(--text);transform-origin:0;border-radius:3px;height:100%;animation:.9s cubic-bezier(.16,1,.3,1) mc-grow;display:block}.phases{grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid;position:relative}.phases:before{content:"";background:var(--line2);height:1px;position:absolute;top:28px;left:10%;right:10%}.phase{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:0 6px;display:flex;position:relative}.moon{background:var(--bg);border-radius:50%;width:56px;height:56px;padding:4px;position:relative}.panel .moon{background:var(--surface)}.moon svg{width:48px;height:48px;display:block}.moon .disc{fill:var(--bg-2);stroke:var(--line2);stroke-width:1px}.moon .lit{fill:var(--lit)}.phase.next .lit{fill:none;stroke:var(--line2);stroke-dasharray:2 2.5}.phase.now .moon{box-shadow:0 0 0 1px var(--signal), 0 0 0 6px color-mix(in srgb, var(--signal) 12%, transparent)}.phase.now .lit{fill:var(--signal);animation:1.2s ease-out mc-wax}.phase .pname{font-size:14.5px;font-weight:600}.phase.next .pname{color:var(--muted)}.phase .pstate{font:500 12px/1 var(--sans);color:var(--faint);align-items:center;gap:5px;display:inline-flex}.phase.now .pstate{color:var(--signal-ink)}.phase .pmeta{color:var(--muted);font-size:12.5px}.rows{flex-direction:column;display:flex}.row{border-top:1px solid var(--line);align-items:flex-start;gap:16px;padding:18px 0;display:flex}.row:first-child{border-top:0}.toast{background:var(--text);color:var(--inv);border-radius:var(--r);align-items:flex-start;gap:12px;max-width:420px;padding:14px 16px;animation:.35s cubic-bezier(.16,1,.3,1) mc-rise;display:flex;box-shadow:0 12px 32px -8px #18181b59}.toast .btn-text{color:var(--inv);opacity:.8}.field{flex-direction:column;gap:7px;display:flex}.field>.label{color:var(--text);font-weight:500}.input{border:1px solid var(--line2);border-radius:var(--r);background:var(--surface);min-height:42px;color:var(--text);font:400 15px/1.3 var(--sans);width:100%;box-shadow:var(--shadow-xs);padding:0 12px;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--faint)}.input:focus{border-color:var(--tide);box-shadow:0 0 0 3px color-mix(in srgb, var(--tide) 22%, transparent);outline:none}textarea.input{resize:vertical;min-height:88px;padding:10px 12px;line-height:1.5}select.input{appearance:none;background-image:none;padding-right:34px}.seg{background:var(--bg-2);border-radius:var(--r);flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg button,.app .seg a{min-height:32px;color:var(--muted);font:500 13.5px/1 var(--sans);cursor:pointer;background:0 0;border:0;border-radius:1px;align-items:center;gap:7px;padding:0 12px;text-decoration:none;display:inline-flex}.seg button:hover,.app .seg a:hover{color:var(--text)}.seg [aria-pressed=true],.app .seg [aria-current=page]{background:var(--raised);color:var(--text);box-shadow:0 1px 2px #18181b14, 0 0 0 1px var(--line)}.seg .c{font:500 12px/1 var(--sans);color:var(--muted)}@keyframes mc-spin{to{transform:rotate(360deg)}}@keyframes mc-pop{0%{opacity:.5;transform:scale(.94)}to{opacity:1;transform:none}}@keyframes mc-grow{0%{transform:scaleX(0)}to{transform:none}}@keyframes mc-wax{0%{opacity:.25}to{opacity:1}}@keyframes mc-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.app *{transition:none!important;animation:none!important}}@container app (width<=760px){.side,.top{display:none}.mtop,.tabbar{display:flex}.content{padding:24px 16px 40px}.display{font-size:26px}.lede{font-size:15px}.big-num{font-size:42px}.hide-sm{display:none!important}.stack-sm{flex-direction:column!important;align-items:stretch!important}.one-sm{grid-template-columns:minmax(0,1fr)!important}.full-sm{width:100%!important}.phase .pmeta{display:none}.phase .pname{font-size:12px}.moon{width:44px;height:44px;padding:3px}.moon svg{width:38px;height:38px}.phases:before{top:22px}.btn,.btn-sm,.btn-text,.input,.seg button,.app .seg a{min-height:44px}.icon-btn{width:44px;height:44px}.app .nav a{min-height:44px}}@container app (width>=761px){.show-sm{display:none!important}}.toast-wrap{z-index:20;position:fixed;top:80px;right:32px}.toast .toast-x{width:44px;height:44px;color:var(--inv);background:0 0;border-color:#0000;margin:-10px -10px -10px 0}@container app (width<=760px){.toast-wrap{top:76px;left:12px;right:12px}.toast{max-width:none}}.form-error{color:var(--danger);align-items:flex-start;gap:8px;font-size:13px;line-height:1.45;display:flex}.form-error .i{flex:none;margin-top:2px}.input[aria-invalid=true]{border-color:var(--danger)}.viewas{background:var(--tide-bg);color:var(--text);border-bottom:1px solid var(--tide);align-items:center;gap:12px;padding:10px 24px;font-size:14px;display:flex}.viewas>p{flex:auto}.viewas .i{color:var(--tide-ink);flex:none}@container app (width<=760px){.viewas{flex-wrap:wrap;padding:10px 16px}}.switch-project{align-items:center;gap:6px;min-height:32px;margin-top:-4px;padding:0 12px;display:inline-flex}
