@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-serif-4-cyrillic-ext-600-normal-D_E8FDgP.woff2) format("woff2"),url(/assets/source-serif-4-cyrillic-ext-600-normal-h2VnbV3V.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-serif-4-cyrillic-600-normal-BDP5YDHD.woff2) format("woff2"),url(/assets/source-serif-4-cyrillic-600-normal-CHh5eQWW.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-serif-4-greek-600-normal-DdRkKr-1.woff2) format("woff2"),url(/assets/source-serif-4-greek-600-normal-OkzgCkGB.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-serif-4-vietnamese-600-normal-B33FcZBi.woff2) format("woff2"),url(/assets/source-serif-4-vietnamese-600-normal-CKUOBVO_.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-serif-4-latin-ext-600-normal-pa-C5Dkf.woff2) format("woff2"),url(/assets/source-serif-4-latin-ext-600-normal-B2fExS53.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/source-serif-4-latin-600-normal-DouSKlru.woff2) format("woff2"),url(/assets/source-serif-4-latin-600-normal-DeJomR3S.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bench: #ebe4d6;--paper: #f6f1e8;--card: #fbf8f2;--ink: #1c1915;--ink-soft: #3f3a33;--muted: #5c564c;--line: #e3dacb;--line-strong: #d2c6b4;--accent: #0c6b62;--accent-hover: #09564f;--accent-soft: #e5f3f0;--accent-ink: #084e48;--brass: #8a5a12;--brass-soft: #f6e7c8;--ok: #0d7a45;--warn: #8a5a00;--err: #a3261d;--err-soft: #fdeceb;--term: #171512;--term-fg: #f3ecdf;--term-muted: #a39888;--term-line: #2c2822;--sans: "IBM Plex Sans", "PingFang SC", "Noto Sans SC", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif;--serif: "Source Serif 4", "Iowan Old Style", "Palatino Linotype", Palatino, "Songti SC", serif;--mono: "IBM Plex Mono", "Sarasa Mono SC", "Noto Sans Mono CJK SC", ui-monospace, monospace;--radius: 12px;--shadow: 0 1px 2px rgba(28, 25, 21, .04);color-scheme:light}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--sans);font-size:14px;line-height:1.45;color:var(--ink);background:var(--bench)}button,select,input{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent-ink);text-underline-offset:2px}a:hover{color:var(--accent)}code,.mono{font-family:var(--mono)}.skip{position:absolute;left:12px;top:-40px;background:var(--ink);color:var(--paper);padding:8px 12px;border-radius:8px;z-index:20}.skip:focus{top:12px}.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}.app{height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.chrome{display:flex;flex-direction:column;background:#171717}.lab .brand h1{font-size:22px}.lab .mark{width:32px;height:32px}.lab .top{padding:8px 16px;gap:12px 16px}.lab .header-tools{margin-left:auto}.lab .tagline{flex:none;max-width:none;color:var(--muted);font-size:12px}.lab-pill{flex-shrink:0;color:#f3f3f3;text-decoration:none;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;border:1px solid #4a4a4a;border-radius:999px;padding:4px 10px}.lab-pill:hover{color:#fff;border-color:#8d8d8d}.rail-label{margin:2px 4px 0;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.rail-tabs{display:flex;gap:4px;padding:3px;background:var(--paper);border:1px solid var(--line);border-radius:999px;position:sticky;top:0;z-index:2}.rail-tab{flex:1;min-width:0;border:0;background:transparent;color:var(--muted);border-radius:999px;min-height:32px;padding:4px 6px;font-size:12.5px;font-weight:600;cursor:pointer}.rail-tab[aria-selected=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.pane{display:flex;flex-direction:column;gap:12px}.pane[hidden]{display:none!important}.build-lead{margin:0 0 10px;color:var(--ink-soft);font-size:13px;line-height:1.45}.build-source{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.build-source-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.build-source-head label{margin:0;font-family:var(--mono);font-size:12px;color:var(--ink)}.build-source textarea{width:100%;min-height:0;flex:1;resize:none;margin:0;padding:10px 12px;border:1px solid var(--line-strong);border-radius:8px;background:#fffdf8;color:var(--ink);font-family:var(--mono);font-size:13px;line-height:1.5;tab-size:4;overflow:auto}.build-source textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.build-source textarea:disabled{opacity:.7}.build-source .note{margin:0}.build-panel .kicker{margin-bottom:4px}.gate-more{margin:10px 0 0}.gate-more a{color:#d5c7b4}.gate-more a:hover{color:#fff}.top{display:flex;align-items:center;gap:20px 28px;padding:12px 20px 10px;background:#171717;color:#f3f3f3}.brand{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none;flex-shrink:0}.brand:hover{color:inherit}.mark{width:40px;height:40px;display:block;flex-shrink:0;border-radius:50%}.header-tools{margin-left:auto;display:flex;align-items:center;gap:10px;flex-shrink:0}.brand-text{display:flex;align-items:center;gap:10px}.brand h1{margin:0;font-family:Inter,IBM Plex Sans,sans-serif;font-size:34px;font-weight:400;letter-spacing:-.035em;line-height:1;color:#c8c8c8}.brand h1 .esp{font-weight:700;color:#fff;letter-spacing:-.045em}.brand h1 .emu{margin-left:.22em}.ver{font-family:var(--mono);font-size:12px;color:#8d8d8d}.tagline{margin:0;flex:1;max-width:40rem;color:#b0b0b0;font-size:14px}.lang{display:flex;padding:3px;border:1px solid #3a3a3a;border-radius:999px;background:#242424;flex-shrink:0}.lang button{border:0;background:transparent;color:#c8c8c8;border-radius:999px;padding:4px 10px;font-size:13px;font-weight:500}.lang button[aria-pressed=true]{background:#3a3a3a;color:#fff;box-shadow:none}.command{display:flex;align-items:center;gap:12px 16px;padding:10px 20px;background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-wrap:wrap}.transport{display:flex;gap:8px;flex-wrap:wrap}.tip-wrap{display:inline-flex}[hidden]{display:none!important}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;min-height:36px;padding:6px 12px;border-radius:9px;border:1px solid var(--line-strong);background:var(--card);color:var(--ink);font-weight:500;line-height:1.2;box-shadow:var(--shadow)}.btn svg{width:12px;height:12px;fill:currentColor;flex-shrink:0}a.btn{text-decoration:none;color:var(--ink)}.btn.github svg{width:16px;height:16px}.account{position:relative}.account-chip{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:3px 12px 3px 3px;border-radius:999px;border:1px solid var(--line-strong);background:var(--card);box-shadow:var(--shadow);font-weight:500}.account-chip img{width:28px;height:28px;border-radius:999px;display:block;background:var(--paper);object-fit:cover}#user-login{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:180px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px #1c19151f;z-index:30}.account-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:8px;padding:8px 10px}.account-menu button:hover,.account-menu button:focus-visible{background:var(--paper)}.tour[hidden]{display:none!important}.tour{position:fixed;inset:0;z-index:40}.tour-catch{position:absolute;inset:0}.tour-spot{position:fixed;border-radius:12px;box-shadow:0 0 0 9999px #10141294;outline:2px solid #e2b15a;outline-offset:0;pointer-events:none;z-index:41;transition:top .28s ease,left .28s ease,width .28s ease,height .28s ease}.tour-card{position:fixed;z-index:42;width:min(360px,calc(100vw - 24px));background:var(--card);color:var(--ink);border-radius:16px;padding:16px 18px 14px;box-shadow:0 18px 50px #10141247;border:1px solid rgba(226,177,90,.55)}.tour-kicker{margin:0 0 6px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--brass)}.tour-card h2{margin:0 0 6px;font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:-.02em}.tour-card p{margin:0;color:var(--ink-soft)}.tour-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.tour-nav{display:flex;gap:8px}.tour-skip{border:0;background:transparent;color:var(--muted);padding:6px 2px;font-weight:500}.tour-skip:hover{color:var(--ink)}.btn:hover:not(:disabled){border-color:#b7ab97;background:#fffdf9}.btn:disabled{opacity:.42;cursor:default;box-shadow:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.quiet{background:transparent;box-shadow:none;border-color:transparent;color:var(--accent-ink);padding-inline:8px}.btn.quiet:hover:not(:disabled){background:var(--accent-soft);border-color:transparent}.btn.is-connected{color:var(--ok);border-color:#b7dcc6;background:#f3faf6}.btn.light{background:var(--paper);color:var(--ink);border-color:transparent}.btn.light:hover:not(:disabled){background:#fff}.chip-field{display:flex;flex-direction:column;gap:3px;min-width:220px}.chip-field span{font-size:11.5px;color:var(--muted);line-height:1}.chip-field select{background:var(--card);border:1px solid var(--line-strong);border-radius:8px;padding:7px 30px 7px 10px;outline:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%235c564c' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.chip-field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.file-readout{flex:1;min-width:8rem;font-family:var(--mono);font-size:12.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-readout.is-empty{color:var(--muted);font-family:var(--sans)}.metrics{margin-left:auto;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:4px 12px 4px 10px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--muted);font-size:13px}.pill .dot{width:8px;height:8px;border-radius:50%;background:#b7ad9e}.pill[data-state=ready]{color:var(--ink)}.pill[data-state=ready] .dot{background:var(--warn)}.pill[data-state=running]{color:var(--ink)}.pill[data-state=running] .dot{background:var(--ok);box-shadow:0 0 0 4px #0d7a4529;animation:pulse 1.8s ease-in-out infinite}.pill[data-state=paused]{color:var(--ink)}.pill[data-state=paused] .dot{background:var(--accent)}.pill[data-state=error]{color:var(--err)}.pill[data-state=error] .dot{background:var(--err)}@keyframes pulse{0%,to{box-shadow:0 0 0 3px #0d7a451f}50%{box-shadow:0 0 0 5px #0d7a450d}}.mips,.cycles{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px}.mips{color:var(--accent-ink);font-weight:500;min-width:7.5rem;text-align:right}.cycles{color:var(--muted);min-width:7rem;text-align:right}.workspace{min-width:0;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr) 380px}.stage{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.setup,.inspector{min-height:0;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow)}.card h2{margin:0 0 12px;font-size:13px;font-weight:600;letter-spacing:0;display:flex;align-items:baseline;justify-content:space-between;gap:8px}.card h2 .meta,.tag{font-family:var(--mono);font-weight:500;font-size:11px;color:var(--accent-ink);background:var(--accent-soft);border-radius:999px;padding:2px 7px}.field{margin-bottom:12px}.field:last-child{margin-bottom:0}.field label,.kicker{display:block;margin-bottom:5px;font-size:12.5px;color:var(--muted)}.field select,.field input[type=text],.mem-controls input[type=text],.mem-controls select{width:100%;background:var(--paper);border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;outline:none}.field select:focus,.field input[type=text]:focus,.mem-controls input:focus,.mem-controls select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%235c564c' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.note{margin:8px 0 0;font-size:12.5px;line-height:1.45;color:var(--muted)}.note.warn{color:var(--warn)}.note.err{color:var(--err)}.chip-blurb{margin:0 0 12px;color:var(--ink-soft);font-size:13px}.dropzone{border:1.5px dashed var(--line-strong);border-radius:12px;background:var(--paper);min-height:92px;padding:16px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;color:var(--ink-soft)}.dropzone:hover,.dropzone:focus-visible,.dropzone.is-over,.term-stage.is-over{border-color:var(--accent);background:var(--accent-soft);outline:none}.dropzone strong{color:var(--ink);font-weight:600}.dropzone .fname{font-family:var(--mono);font-size:12px;color:var(--ink);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.build-panel{margin-top:4px;padding:0;border:0;background:transparent}.lib-list{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.lib-item{border:1px solid var(--line);border-radius:10px;padding:8px 8px 6px;background:var(--paper)}.lib-item.is-current{border-color:var(--accent);background:var(--accent-soft)}.lib-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.lib-name,.lib-name-input{font-size:13px;font-weight:600;min-width:0}.lib-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-name-input{width:100%;font:inherit;font-weight:600;padding:4px 6px;border:1px solid var(--line-strong);border-radius:6px;background:#fffdf8}.lib-meta{margin:4px 0 0;font-family:var(--mono);font-size:11px;line-height:1.4;color:var(--muted)}.lib-actions{display:flex;flex-wrap:wrap;gap:2px;margin-top:4px}.lib-actions .btn{min-height:28px;padding:2px 8px;font-size:12px;box-shadow:none}.build-dock{position:absolute;top:8px;right:8px;bottom:calc(var(--uart-h) + 16px);width:min(420px,46%);z-index:5;display:flex;flex-direction:column;background:var(--paper);border:2px solid var(--accent);border-radius:12px;box-shadow:0 12px 40px #1c181247;padding:8px 12px 10px;min-height:0}.build-dock[hidden]{display:none!important}.build-dock .build-source{flex:1;min-height:0;margin:0;display:flex;flex-direction:column}.build-source-actions{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.build-editor-row{margin-top:8px}.editor-fab{position:absolute;top:10px;right:10px;z-index:4;min-height:32px;padding:4px 12px;border-radius:999px;border:1px solid var(--line-strong);background:#fffaf0eb;color:var(--ink);font:600 12px/1 var(--sans, inherit);cursor:pointer;box-shadow:0 4px 14px #0000002e}.editor-fab:hover,.editor-fab:focus-visible{border-color:var(--accent);outline:none}.editor-fab[hidden]{display:none!important}.build-panel[hidden]{display:none}.build-row{display:flex;flex-direction:column;align-items:stretch;gap:8px}.build-chip{display:flex;flex-direction:column;align-items:stretch;gap:4px;color:var(--muted);font-size:12.5px}.build-chip select{width:100%;min-height:36px;background:var(--paper);border:1px solid var(--line-strong);border-radius:8px;padding:6px 10px}#build-btn{width:100%}#build-status{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}#build-status[hidden]{display:none}.file-row{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;margin-top:8px}.file-row .tip-wrap{max-width:100%}.file-row .btn{white-space:normal;text-align:left;height:auto}.how{margin-top:10px}.how summary{cursor:pointer;color:var(--muted);font-size:12.5px}.how p{margin:8px 0 0}.stage{--uart-h: 120px;position:relative}.bench-stage{flex:1 1 auto;min-height:0;position:relative;display:flex;flex-direction:column;background:#1a1814;border-left:1px solid #2a261f;border-right:1px solid #2a261f;overflow:hidden}.bench-toolbar{flex:0 0 auto;display:flex;justify-content:flex-end;gap:6px;padding:4px 8px 0}.bench-toolbar .btn{min-height:26px;padding:2px 10px;font-size:11.5px;color:#c9bfae;border-color:#3a342c;background:transparent;box-shadow:none}.bench-toolbar .btn.is-on,.bench-toolbar .btn[aria-pressed=true]{color:#1a1814;background:#c9bfae;border-color:#c9bfae}.wiring-tip{flex:0 0 auto;display:flex;align-items:flex-start;gap:10px;margin:6px 8px 0;padding:8px 10px;border-radius:10px;border:1px solid #c9a227;background:linear-gradient(180deg,#fff8e6,#f5ebd0);color:#3a3224;box-shadow:0 4px 14px #0000002e}.wiring-tip[hidden]{display:none!important}.wiring-tip p{margin:0;flex:1;font-size:12.5px;line-height:1.45}.wiring-tip .btn{flex:0 0 auto;min-height:28px;padding:2px 10px;font-size:12px;color:#3a3224;border-color:#c9a227;background:#fffaf0;box-shadow:none}.bench-toolbar .wire-in-circuit:not([hidden]){color:#1a1814;background:#e8c75a;border-color:#c9a227;font-weight:700}.bench-toolbar .wire-in-circuit[hidden]{display:none!important}.bench-view{flex:1 1 auto;min-height:0;width:100%;position:relative;overflow:auto}.bench2d-host{min-height:100%;box-sizing:border-box;padding:10px 12px 12px}.bench2d-stage{display:flex;flex-wrap:wrap;align-items:flex-start;gap:14px 18px;justify-content:center;position:relative}.bench-devkit-layout .bench2d-stage{flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;min-height:280px}.bench2d-col.board{flex:1 1 auto;display:flex;align-items:flex-start;justify-content:center;padding-top:6px;min-width:0}.bench2d-col.parts{flex:0 0 260px;display:flex;flex-direction:column;gap:10px;min-width:0;max-height:min(70vh,640px);overflow:auto;padding:8px 10px 10px;border:1px solid #2f2a24;border-radius:12px;background:#14121073}.bench-parts-strip-title{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:#a89c88;margin:0 0 2px}.bench-devkit-layout .bench2d-col.board .bench-devkit.board-frame{max-height:none;margin:0;width:min(100%,460px)}.bench-devkit-layout .bench2d-col.board .bench-devkit.board-frame svg{width:100%;max-width:460px;height:auto}.bench2d-row{display:flex;flex-wrap:wrap;gap:14px 18px;align-items:flex-end}.bench2d-part{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 10px;background:#fff8eb0a;border:1px solid #2f2a24;border-radius:10px}.bench2d-part.wide{flex:1 1 220px}.bench2d-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;color:#a89c88;text-align:center}.bench2d-part wokwi-esp32-devkit-v1,.bench2d-part wokwi-led,.bench2d-part wokwi-rgb-led,.bench2d-part wokwi-servo,.bench2d-part wokwi-ssd1306,.bench2d-part wokwi-neopixel-matrix,.bench2d-part wokwi-pushbutton,.bench2d-part wokwi-buzzer,.bench2d-part wokwi-potentiometer,.bench2d-part wokwi-photoresistor-sensor,.bench2d-part wokwi-dht22,.bench2d-part wokwi-mpu6050,.bench2d-col.board wokwi-esp32-devkit-v1{display:block;max-width:100%}.bench-palette{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0 0 10px;padding:6px 8px;border:1px solid #2f2a24;border-radius:10px;background:#1412108c}.bench-palette-title{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#a89c88;margin-right:4px}.bench-part-toggle.is-on,.bench-part-toggle[aria-pressed=true]{color:#1a1814;background:#c9bfae;border-color:#c9bfae}.bench-overlay-badge{font-family:var(--mono);font-size:11px;color:#c9bfae;margin:0 0 8px}.bench-overlay-badge[hidden]{display:none!important}.bench2d-part{cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.bench2d-part.is-selected{border-color:#c9a227;box-shadow:0 0 0 1px #c9a227 inset,0 0 12px #c9a22740}.bench2d-part.net-flash,.bench2d-col.board.net-flash{animation:netFlash .65s ease}.bench2d-stub{display:block;max-width:160px;font-family:var(--mono);font-size:9.5px;line-height:1.35;color:#8a7f6e;text-align:center}.bench2d-col.board{border-radius:12px;padding:6px;border:1px solid transparent}.bench2d-col.board.net-flash,.bench2d-col.board.is-selected{border-color:#c9a227}.circuit-svg .cpad.is-selected .cap{stroke:#c9a227;stroke-width:2.6;filter:drop-shadow(0 0 4px rgba(201,162,39,.55))}.circuit-svg .cpad.flash .cap,.circuit-svg .wire.flash .line,.circuit-svg .part.flash .body{animation:netFlash .65s ease}.circuit-svg .wire.flash .line{stroke:#c9a227;stroke-width:2.8}.gpio-pin.net-flash{animation:netFlash .65s ease;outline:2px solid #c9a227}@keyframes netFlash{0%{box-shadow:0 0 #c9a2278c;filter:brightness(1.35)}40%{box-shadow:0 0 0 6px #c9a22733;filter:brightness(1.2)}to{box-shadow:0 0 #c9a22700;filter:brightness(1)}}.bench3d-panel{flex:0 0 38%;min-height:180px;max-height:42%;border-top:1px solid #2f2a24;background:#141210;position:relative}.bench3d-panel[hidden]{display:none!important}.bench3d-view{width:100%;height:100%;min-height:180px;position:relative}.bench3d-view canvas{display:block;width:100%!important;height:100%!important;touch-action:none;cursor:grab}.bench3d-view canvas:active{cursor:grabbing}.bench-caption{margin:0;padding:4px 10px 6px;font-size:11.5px;line-height:1.35;color:#c9bfae;background:#1a1814eb;border-top:1px solid #2f2a24;flex:0 0 auto}.circuit-stage{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:var(--paper);border-left:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);overflow:auto}.circuit-stage[hidden]{display:none!important}.circuit-root{display:flex;flex-direction:column;min-height:0;padding:8px 10px 10px;gap:6px}.circuit-bar{display:flex;flex-wrap:wrap;gap:6px}.circuit-bar .btn{min-height:28px;padding:2px 10px;box-shadow:none}.circuit-root .note{margin:0}.circuit-svg{width:100%;height:auto;min-height:220px;flex:1;background:#f7f1e6;border:1px solid var(--line);border-radius:10px;touch-action:none}.circuit-svg .tag{font-family:var(--mono);font-size:8px;fill:var(--muted);pointer-events:none}.circuit-svg .part .tag{pointer-events:auto;cursor:grab}.circuit-svg .cpad{cursor:pointer}.circuit-svg .cpad .hit{fill:transparent}.circuit-svg .cpad .cap{fill:#efe6d4;stroke:#8d8374;stroke-width:1.2}.circuit-svg .cpad.out.low .cap{fill:#083f38;stroke:#0c6b62}.circuit-svg .cpad.out.high .cap{fill:#0c6b62;stroke:#084e48}.circuit-svg .cpad.pending .cap{stroke:#8a5a12;stroke-width:2.4}.circuit-svg .term{fill:#e7d7a4;stroke:#8a6a32;cursor:crosshair}.circuit-svg .part.pending .term{stroke-width:2}.circuit-svg .part .body{stroke:#5c564c;stroke-width:1.6;cursor:grab}.circuit-svg .part.led .body{fill:#f6d5d0;stroke:#a33b32}.circuit-svg .part.led .glyph{stroke:#a33b32;stroke-width:1.4;pointer-events:none}.circuit-svg .part.led.lit .body{fill:#ff5d4e;filter:drop-shadow(0 0 5px #ffb1a8)}.circuit-svg .part.resistor .body{fill:transparent;stroke:none}.circuit-svg .part.resistor .glyph{stroke:#8a5a12;stroke-width:2;fill:none;pointer-events:none}.circuit-svg .part.button .body{fill:#d7dbdf}.circuit-svg .part.button.down .body{fill:#1c1915}.circuit-svg .wire{cursor:pointer}.circuit-svg .wire .hit{stroke:transparent;stroke-width:10}.circuit-svg .wire .line{stroke:#5c564c;stroke-width:2;fill:none;pointer-events:none}.circuit-svg .wire.live .line{stroke:#0c6b62}.circuit-svg .wire.selected .line{stroke:#8a5a12;stroke-width:2.6}.console-panel{flex:0 0 var(--uart-h);height:var(--uart-h);min-height:112px;max-height:70%;min-width:0;display:flex;flex-direction:column;background:var(--term);color:var(--term-fg);border-left:1px solid #2a261f;border-right:1px solid #2a261f}.uart-resize{flex:0 0 6px;height:6px;cursor:ns-resize;background:#2a261f;touch-action:none}.uart-resize:hover,.uart-resize:focus-visible{background:#7fd0c8}.term-toolbar{display:flex;align-items:center;flex-wrap:nowrap;gap:6px;padding:2px 8px;border-bottom:1px solid var(--term-line);color:var(--term-muted);font-size:12px;min-width:0}.console-panel:not(.uart-tall) .gate{overflow:hidden;align-items:center;padding:6px 10px}.console-panel:not(.uart-tall) .empty-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 10px;max-width:none;width:100%}.console-panel:not(.uart-tall) .gate h2{font-size:15px;margin:0;flex:0 1 auto}.console-panel:not(.uart-tall) .empty-body,.console-panel:not(.uart-tall) .steps,.console-panel:not(.uart-tall) .gate-more{display:none}.console-panel:not(.uart-tall) .empty-actions{margin-top:0;flex:0 1 auto}.console-panel:not(.uart-tall) .gate p{font-size:12px;margin:0}.console-panel:not(.uart-tall) .engine-line{margin-top:0!important;flex:1 1 140px}.console-panel:not(.uart-tall) .show-console{margin-top:0}.console-panel:not(.uart-tall) .gate .btn{min-height:28px;padding:2px 8px;font-size:12px}.uart-field select{background:#241f1a;color:var(--term-fg);border:1px solid #4a433a;border-radius:8px;min-height:26px;padding:1px 8px;font-family:var(--mono);font-size:12px}.uart-field select:focus{border-color:#7fd0c8;outline:none}.echo-toggle{display:inline-flex;align-items:center;gap:6px;color:var(--term-muted);white-space:nowrap;cursor:pointer}.echo-toggle input{accent-color:#0c6b62}.term-toolbar h2{margin:0;font-size:13px;font-weight:600;line-height:1.2;color:var(--term-fg);white-space:nowrap;flex:0 0 auto}.term-toolbar .hint{color:#8d8376;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.term-toolbar .spacer{flex:1}.term-toolbar .count{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--term-fg);white-space:nowrap;flex:0 0 auto}.term-toolbar .btn{background:transparent;color:var(--term-fg);border-color:#4a433a;box-shadow:none;min-height:26px;height:26px;padding:0 8px;font-size:12px}.term-toolbar .btn:hover:not(:disabled){background:#2a261f;border-color:#6b6256}.term-stage{position:relative;flex:1;min-height:0;overflow:hidden;cursor:text}.term-stage.is-focused{box-shadow:inset 0 0 0 2px #7fd0c8bf}#terminal-container{height:100%;padding:1px 6px 1px 10px}.xterm{height:100%}.xterm .xterm-viewport{scrollbar-width:thin;scrollbar-color:#4a433a transparent}.gate{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;padding:28px 22px;background:radial-gradient(900px 280px at 50% -20%,rgba(12,107,98,.28),transparent 60%),var(--term);text-align:center}.gate[hidden]{display:none}.empty-inner{max-width:34rem}.gate h2{margin:0 0 8px;font-family:var(--serif);font-weight:600;font-size:32px;letter-spacing:-.025em;line-height:1.15;color:var(--term-fg)}.gate p{margin:0 auto;max-width:32rem;color:var(--term-muted);font-size:15px}.steps{list-style:none;display:flex;justify-content:center;gap:16px;margin:18px 0 0;padding:0;color:var(--term-fg);font-size:13px}.steps li{display:flex;align-items:center;gap:8px}.steps span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#2c2822;color:#d9cbb8;font-family:var(--mono);font-size:12px}.empty-actions{display:flex;flex-wrap:wrap;gap:8px 12px;justify-content:center;align-items:center;margin-top:20px}.gate .btn.quiet{color:#d5c7b4}.gate .btn.quiet:hover{background:#ffffff0f;color:#fff}.engine-line{margin-top:16px!important;font-family:var(--mono);font-size:12px!important;color:#8fd9c8!important}.show-console{margin-top:8px}.tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.tile{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 10px 9px}.tile .k{font-size:12px;color:var(--muted);margin-bottom:2px}.tile .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:16px;font-weight:500;color:var(--ink)}.tile .v small{font-size:11px;color:var(--muted);font-weight:500;margin-left:3px}.tile.accent .v{color:var(--accent-ink)}.chart-wrap{position:relative}#mips-chart{display:block;width:100%;height:72px;border-radius:10px;background:var(--paper);border:1px solid var(--line)}.chart-caption{display:flex;justify-content:space-between;margin-top:4px;font-size:12px;color:var(--muted)}.chart-tip{position:absolute;top:8px;pointer-events:none;background:var(--ink);color:var(--paper);padding:3px 7px;border-radius:6px;font-family:var(--mono);font-size:11px;display:none;white-space:nowrap}.cores{display:grid;grid-template-columns:1fr 1fr;gap:8px}.core{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.core .k{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}.core .v{margin-top:3px;font-family:var(--mono);font-size:13px;color:var(--accent-ink)}.core.idle{opacity:.55}.gpio-legend{display:flex;flex-wrap:wrap;gap:8px 12px;margin-bottom:8px;font-size:12px;color:var(--muted)}.gpio-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px;border:1px solid var(--line-strong)}.gpio-legend i.out-high{background:var(--accent);border-color:var(--accent)}.gpio-legend i.out-low{background:transparent;border-color:var(--accent)}.gpio-legend i.in-high{background:#e7e0d4;border-color:#8d8374}.gpio-legend i.in-low{background:var(--card)}.gpio-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:5px}.gpio-pin{height:32px;padding:0;border-radius:7px;border:1px solid var(--line-strong);background:var(--card);color:var(--muted);font-family:var(--mono);font-size:11px;box-shadow:none}.gpio-pin.in.high{background:#efe8db;border-color:#8d8374;color:var(--ink)}.gpio-pin.in:hover:not(:disabled){border-color:var(--ink)}.gpio-pin.out{cursor:default}.gpio-pin.out.low{border-color:var(--accent);color:var(--accent-ink)}.gpio-pin.out.high{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.gpio-pin.absent{visibility:hidden}.gpio-tools{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:8px}.gpio-tools h2{margin:0}.seg{display:flex;flex:0 0 auto;padding:2px;background:var(--paper);border:1px solid var(--line);border-radius:999px}.seg button{border:0;background:transparent;color:var(--muted);border-radius:999px;min-height:26px;padding:2px 10px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:none}.seg button[aria-selected=true]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.seg button.circuit-tab{display:inline-flex;align-items:center;gap:5px;padding-right:6px}.seg button.circuit-tab .wire-badge{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.01em;line-height:1;padding:3px 6px;border-radius:999px;background:#e8c75a;color:#1a1814;border:1px solid #c9a227}.seg button.circuit-tab[aria-selected=true] .wire-badge{background:#1c1915;color:#f5ebd0;border-color:#1c1915}#gpio-tab-circuit.circuit-discover,#gpio-card.circuit-discover,#circuit-slot.circuit-discover{animation:circuitDiscover 1.1s ease}@keyframes circuitDiscover{0%,to{box-shadow:none}25%,75%{box-shadow:0 0 0 2px #c9a227,0 0 18px #c9a2278c}50%{box-shadow:0 0 0 3px #e8c75a,0 0 22px #e8c75ab3}}.board-caption{margin:0 0 8px}.board-frame{max-height:220px}.board-frame{display:flex;justify-content:center;margin:0 0 8px}.board-frame svg{display:block;width:min(100%,250px);height:auto}.board-frame .silk,.board-frame .ink{font-family:var(--mono);font-size:6.5px;pointer-events:none}.board-frame .silk{fill:#e7f6ef}.board-frame .ink{fill:#1c1915}.board-frame .pcb{fill:#0f6b58;stroke:#0b4e40;stroke-width:1.5}.board-frame .mount{fill:#08382e;stroke:#d5ece4;stroke-width:.6}.board-frame .mod{fill:#d7dbdf;stroke:#8e959c;stroke-width:1}.board-frame .die{fill:#2c3136}.board-frame .ant{stroke:#8e959c;stroke-width:1.2;stroke-linecap:round}.board-frame .usb{fill:#c5c9ce;stroke:#6d747b;stroke-width:.8}.board-frame .usb-tongue{fill:#8d939a}.board-frame .key{fill:#1c1915}.board-frame .hole{fill:#e7d7a4;stroke:#8a6a32;stroke-width:1}.board-frame .hit{fill:transparent}.board-frame .twin-fixed.gnd .hole{fill:#1a2422;stroke:#9eb0aa}.board-frame .twin-fixed.pwr .hole{fill:#e7b3a2;stroke:#8a3d32}.board-frame .twin-fixed.rst .hole{fill:#d9d3c7;stroke:#6e675c}.board-frame .twin-fixed.nc .hole{fill:transparent;stroke:#9eb0aa;stroke-dasharray:1.5 1.2}.board-frame .twin-pad.in{cursor:pointer}.board-frame .twin-pad.out{cursor:default}.board-frame .twin-pad.in.high .hole{fill:#efe6d4;stroke:#cbbd9a}.board-frame .twin-pad.in.low .hole{fill:#1c1915;stroke:#8d8374}.board-frame .twin-pad.out.low .hole{fill:#083f38;stroke:#7fd0c8}.board-frame .twin-pad.out.high .hole{fill:#9cf0e2;stroke:#f4fffc}.board-frame .twin-pad.mark .hole{stroke-width:2}.board-frame .twin-led{fill:#143f36;stroke:#d5ece4;stroke-width:.8}.board-frame .twin-led.lit{fill:#c8ffe8;stroke:#f4fffc;filter:drop-shadow(0 0 3px #9cf0e2)}@keyframes twin-rise{0%{filter:drop-shadow(0 0 0 rgba(156,240,226,.15))}40%{filter:drop-shadow(0 0 6px #e9fff8)}to{filter:drop-shadow(0 0 1.5px rgba(156,240,226,.45))}}.board-frame .twin-pad.rise .hole,.board-frame .twin-led.rise{animation:twin-rise .55s ease-out}.reg-grid{display:grid;grid-template-columns:1fr 1fr;gap:3px 12px}.reg{display:flex;justify-content:space-between;gap:6px;font-family:var(--mono);font-size:11.5px;min-width:0}.reg .name{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reg .val{color:var(--ink);border-radius:4px;padding:0 4px;font-variant-numeric:tabular-nums;transition:background-color .6s,color .6s}.reg .val.changed{background:var(--brass-soft);color:var(--brass);transition:none}.reg-empty{margin:0;color:var(--muted);font-size:13px}.mem-controls{display:flex;gap:6px;align-items:center;margin-bottom:8px}.mem-controls input[type=text]{flex:1;min-width:0;font-family:var(--mono);font-size:12.5px;padding:6px 8px}.mem-controls select{width:auto;font-family:var(--mono);font-size:12px;padding:6px 8px}.mem-follow{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:12.5px;color:var(--muted);cursor:pointer}.mem-follow input{accent-color:var(--accent);width:15px;height:15px}#mem-display{margin:0;font-family:var(--mono);font-size:11px;line-height:1.55;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px;max-height:240px;overflow:auto;white-space:pre;scrollbar-width:thin}#mem-display .addr{color:var(--accent-ink)}#mem-display .ascii{color:var(--muted)}#mem-display .zero{color:#b3aa9c}#mem-display .placeholder{color:var(--muted);white-space:normal}.site-footer{display:flex;justify-content:space-between;gap:8px 20px;flex-wrap:wrap;padding:8px 20px 10px;background:var(--card);border-top:1px solid var(--line);color:var(--muted);font-size:12px;line-height:1.45}.site-footer p{margin:0}.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--accent-ink)}.tooltip{position:fixed;z-index:30;max-width:260px;padding:7px 9px;border-radius:8px;background:var(--ink);color:var(--paper);font-size:12.5px;line-height:1.4;pointer-events:none;opacity:0;transform:translateY(2px)}.tooltip[data-show="1"]{opacity:1}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:1280px){.workspace{grid-template-columns:280px minmax(0,1fr) 340px}.gate h2{font-size:28px}}@media(max-width:1040px){.app{height:auto;min-height:100dvh}.chrome{position:sticky;top:0;z-index:8}.workspace{display:flex;flex-direction:column}.setup,.inspector{overflow:visible}.stage{order:-1;min-height:64vh;overflow:hidden}.term-toolbar{flex-wrap:wrap;row-gap:4px}.console-panel{border-left:0;border-right:0;min-height:140px}.build-dock{position:absolute;inset:8px 8px calc(var(--uart-h) + 12px);width:auto;max-width:none}.bench-stage{min-height:42vh}.circuit-stage{border-left:0;border-right:0;min-height:220px}.dropzone{min-height:88px}.chip-field{flex:1 1 180px;min-width:0}.metrics{margin-left:0}.steps{flex-direction:column;align-items:center}}@media(max-width:720px){.top{flex-wrap:wrap;padding:12px 14px;gap:10px}.header-tools{margin-left:auto}.btn.github span{max-width:9rem}.command,.site-footer{padding-inline:14px}.site-footer{flex-direction:column}.mark{width:34px;height:34px}.brand h1,.gate h2{font-size:26px}.gpio-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.reg-grid{grid-template-columns:1fr}}@media(pointer:coarse){.gpio-pin{height:38px}.btn{min-height:40px}}@media(prefers-reduced-motion:reduce){.pill[data-state=running] .dot,.board-frame .twin-pad.rise .hole,.board-frame .twin-led.rise{animation:none}.reg .val,.tour-spot{transition:none}.bench2d-part,.bench2d-part.net-flash,.bench2d-col.board.net-flash,.circuit-svg .cpad.flash .cap,.circuit-svg .wire.flash .line,.circuit-svg .part.flash .body{animation:none!important;transition:none!important}#gpio-tab-circuit.circuit-discover,#gpio-card.circuit-discover,#circuit-slot.circuit-discover{animation:none;outline:2px solid #c9a227}}@media(max-width:900px){.bench2d-stage{gap:12px}.bench-devkit-layout .bench2d-stage{flex-wrap:wrap}.bench2d-col.parts{flex:1 1 100%;max-height:280px}.bench-palette{gap:4px}.bench-palette .btn{min-height:36px;padding:4px 8px;font-size:12px}.bench2d-part{padding:6px 8px}.bench2d-stub{max-width:120px}.bench-toolbar{flex-wrap:wrap}.bench-devkit-layout .bench2d-col.board .bench-devkit.board-frame{width:min(100%,360px)}}.bench2d-stage{position:relative}.bench2d-col.circuit-parts{flex:0 1 200px;display:flex;flex-direction:column;gap:10px;min-width:140px;padding:6px 8px;border:1px dashed #3a342c;border-radius:12px;background:#14121059}.bench-circuit-title{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:#a89c88}.bench2d-part.circuit-wire-part{cursor:default}.bench-pin-hit{position:absolute;z-index:6;width:14px;height:14px;margin:0;padding:0;border-radius:50%;border:2px solid #c9a227;background:#c9a22759;box-shadow:0 0 0 1px #00000059;transform:translate(-50%,-50%);cursor:crosshair;pointer-events:auto}.bench-pin-hit:hover,.bench-pin-hit:focus-visible{background:#c9a227bf;outline:none;box-shadow:0 0 0 2px #fff3,0 0 10px #c9a2278c}.bench-wire-svg{z-index:5}.bench-wire-svg .bench-wire .line{stroke:#7a9bb8;stroke-width:2.2;fill:none;pointer-events:none}.bench-wire-svg .bench-wire .hit{stroke:transparent;stroke-width:12;fill:none;pointer-events:stroke;cursor:pointer}.bench-wire-svg .bench-wire.live .line{stroke:#e8c75a;stroke-width:2.6;filter:drop-shadow(0 0 3px rgba(232,199,90,.55))}.bench-wire-svg .bench-wire.selected .line{stroke:#f0d78c;stroke-width:3}.bench-wire-svg .bench-rubber{stroke:#c9a227;stroke-width:2;stroke-dasharray:5 4;fill:none;pointer-events:none}.bench2d-part wokwi-resistor{display:block;max-width:100%}
