@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-vietnamese-700-normal-BLYPkJbo.woff2) format("woff2"),url(/assets/bricolage-grotesque-vietnamese-700-normal-CHrFuVHU.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-ext-700-normal-fBkt-7fi.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-ext-700-normal-BXpPFNFj.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-700-normal-gtcctNPv.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-700-normal-DvJDmrLu.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-vietnamese-800-normal-RJtJa6zl.woff2) format("woff2"),url(/assets/bricolage-grotesque-vietnamese-800-normal-DJ4hCX8l.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-latin-ext-800-normal-BimIDUhy.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-ext-800-normal-CkoBqIJM.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:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-latin-800-normal-J50vIsBe.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-800-normal-Br4b-5gk.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 Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-cyrillic-ext-700-normal-BmRLXWpJ.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-700-normal-DCQwxkRk.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:700;src:url(/assets/ibm-plex-sans-cyrillic-700-normal-D_uavGvn.woff2) format("woff2"),url(/assets/ibm-plex-sans-cyrillic-700-normal-RFb1v-CK.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:700;src:url(/assets/ibm-plex-sans-greek-700-normal-wyJ6jzdA.woff2) format("woff2"),url(/assets/ibm-plex-sans-greek-700-normal-CkZN0sRy.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:700;src:url(/assets/ibm-plex-sans-vietnamese-700-normal-CkEo6LDy.woff2) format("woff2"),url(/assets/ibm-plex-sans-vietnamese-700-normal-BV5B8Are.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:700;src:url(/assets/ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.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:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.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: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+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: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+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: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+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: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+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: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+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{--ink-900: #00718a;--ink-800: #006a81;--ink-700: #005f73;--ink-600: #2c8aa0;--ink-text: #ffffff;--ink-muted: #d9f1f7;--canvas: #f3f4f6;--card: #ffffff;--card-sunken: #f6f7fa;--border: #e3e6ed;--border-strong: #cfd4de;--text: #1d2230;--text-2: #3f4656;--muted: #646b7b;--faint: #8a90a0;--brand: #00a4c8;--brand-soft: #c6ebf4;--primary: #00718a;--primary-hover: #005f73;--primary-soft: #e0f3f8;--link: #00718a;--green: #1e6d44;--green-bg: #e5f1e8;--blue-text: #005f73;--blue-bg: #e0f3f8;--orange: #b5470a;--orange-text: #93470f;--orange-bg: #fcefe3;--amber: #e8a33c;--amber-hover: #dc9428;--amber-bg: #fdf3ea;--amber-border: #f2cfa8;--grey-bg: #eceef1;--grey-text: #4b5161;--highlight: #fbe1aa;--danger: #a3261b;--danger-bg: #fbeceb;--font-display: "Bricolage Grotesque", "IBM Plex Sans", system-ui, sans-serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(22, 26, 38, .04);--shadow: 0 1px 3px rgba(22, 26, 38, .06), 0 1px 2px rgba(22, 26, 38, .04);--shadow-lg: 0 24px 48px rgba(22, 26, 38, .24);--focus: 0 0 0 3px rgba(232, 163, 60, .55);--sidebar-w: 240px;--topbar-h: 64px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--canvas);color:var(--text);font-family:var(--font-body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-family:var(--font-display);letter-spacing:-.01em;color:var(--text)}h1{font-size:22px;font-weight:700}h2{font-size:17px;font-weight:700}h3{font-size:15px;font-weight:700}p{margin:0}a{color:var(--link)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-sm)}.mono{font-family:var(--font-mono);font-size:.86em;letter-spacing:.01em}.muted{color:var(--muted)}.small{font-size:13px}.tiny{font-size:12px}.strong{font-weight:600}.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}.skip-link{position:absolute;left:8px;top:-40px;z-index:100;background:var(--card);padding:8px 12px;border-radius:var(--radius)}.skip-link:focus{top:8px}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--ink-900);color:var(--ink-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:20px 12px 16px;overflow-y:auto}.brand{padding:0 8px 22px}.brand-name{font-family:var(--font-display);font-weight:800;font-size:22px;letter-spacing:.01em;color:#fff;line-height:1.1}.brand-sub{font-size:12px;color:var(--ink-muted);margin-top:4px}.nav{display:flex;flex-direction:column;gap:4px}.nav-group{margin-top:14px;padding:6px 8px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-muted)}.nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius);color:var(--ink-text);text-decoration:none;font-weight:500;font-size:14px}.nav a svg{width:17px;height:17px;flex:none;opacity:.9}.nav a:hover{background:#ffffff1a}.nav a.active{box-shadow:inset 3px 0 #fff;background:var(--ink-700);color:#fff;font-weight:600}.nav .count{margin-left:auto}.sidebar-foot{margin-top:auto;border-top:1px solid rgba(255,255,255,.2);padding:16px 8px 0;display:flex;align-items:center;gap:12px}.sidebar-foot .who{min-width:0;flex:1}.sidebar-foot .name{font-weight:600;font-size:14px;color:#fff;line-height:1.25}.sidebar-foot .id{font-family:var(--font-mono);font-size:11px;color:var(--ink-muted)}.sidebar-foot .id.plain-id{font-family:var(--font-body);font-size:12px}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:var(--radius);border:1px solid transparent;background:transparent;color:inherit;cursor:pointer}.icon-btn:hover{background:#7f7f7f1f}.sidebar .icon-btn{color:var(--ink-muted)}.main{min-width:0;display:flex;flex-direction:column}.topbar{min-height:var(--topbar-h);flex-wrap:wrap;row-gap:8px;background:var(--card);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 28px;position:sticky;top:0;z-index:20}.topbar h1{font-size:19px}.topbar .spacer{flex:1}.session-chip{font-family:var(--font-mono);font-size:12px;color:var(--grey-text);background:var(--grey-bg);padding:4px 9px;border-radius:5px}.bell{position:relative;width:40px;height:40px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);display:grid;place-items:center;cursor:pointer;color:var(--text-2)}.bell .dot{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--orange);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;border:2px solid var(--card)}.content{padding:24px 28px 48px;max-width:1180px;width:100%}.content.wide{max-width:1320px}.page-head{background:var(--card);border-bottom:1px solid var(--border);padding:20px 28px}.page-head .crumbs+h1{margin-top:6px}.page-head h1{font-size:28px}.count{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 6px;border-radius:6px;font-size:12px;font-weight:700;background:var(--amber);color:#2b1a02}.count.slate{background:var(--brand);color:#10222a}.mobile-top,.bottom-bar{display:none}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:20px 22px}.card-head{display:flex;align-items:center;gap:12px;padding:18px 22px 12px}.card-head h2{font-size:16px}.card-head .right{margin-left:auto}.stack{display:flex;flex-direction:column;gap:20px}.stack-sm{display:flex;flex-direction:column;gap:10px}.row{display:flex;align-items:center;gap:12px}.row.wrap{flex-wrap:wrap}.between{justify-content:space-between}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-main-side{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:22px;align-items:start}.grid-side-main{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;align-items:start}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--card);color:var(--text);font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{background:var(--card-sunken)}.btn svg{width:16px;height:16px}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-hover)}.btn.amber{background:var(--amber);border-color:var(--amber);color:#2b1a02}.btn.amber:hover{background:var(--amber-hover)}.btn.danger{border-color:#e7b7b2;color:var(--danger)}.btn.sm{height:32px;padding:0 12px;font-size:13px}.btn.lg{height:48px;font-size:15px;padding:0 22px}.btn.block{width:100%}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed}.link-btn{background:none;border:0;padding:0;color:var(--link);text-decoration:underline;text-underline-offset:2px;cursor:pointer;font-size:inherit}.link{color:var(--link);text-decoration:underline;text-underline-offset:2px;font-size:13px}.strong-link{color:var(--primary);font-weight:700;text-decoration:none;font-size:14px}.strong-link:hover{text-decoration:underline}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;line-height:18px}.pill.green{background:var(--green-bg);color:var(--green)}.pill.blue{background:var(--blue-bg);color:var(--blue-text)}.pill.orange{background:var(--orange-bg);color:var(--orange-text)}.pill.grey{background:var(--grey-bg);color:var(--grey-text)}.pill.navy{background:var(--primary);color:#fff}.tag{display:inline-block;padding:1px 6px;border:1px solid var(--border-strong);border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-text)}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:5px;background:var(--grey-bg);color:var(--text-2);font-size:12px;font-weight:500}.chip.hl{background:var(--highlight)}mark{background:var(--highlight);color:inherit;padding:0 2px;border-radius:3px}.bar{height:6px;border-radius:99px;background:var(--border);overflow:hidden}.bar>span{display:block;height:100%;background:var(--brand);border-radius:99px}.bar.done>span{background:var(--green)}.segbar{display:flex;gap:4px}.segbar .seg{flex:1 1 0;min-width:0}.segbar .seg:first-child,.segbar .seg:last-child{flex-grow:.62}.segbar .fill{height:10px;border-radius:2px;background:var(--border)}.segbar .done .fill{background:var(--brand)}.segbar .review .fill{background:repeating-linear-gradient(-45deg,var(--brand) 0 5px,var(--brand-soft) 5px 10px)}.segbar .label{margin-top:8px;font-size:11px;color:var(--muted)}.segbar .review .label{color:var(--primary);font-weight:700}.table-wrap{overflow-x:auto;position:relative}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}table.data td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}table.data tr:last-child td{border-bottom:0}table.data tr.warn td{background:var(--amber-bg)}table.data .who-name{font-weight:600;font-size:14px}table.data .who-id{font-family:var(--font-mono);font-size:11.5px;color:var(--muted)}table.data tr.clickable{cursor:pointer}table.data tr.clickable:hover td{background:var(--card-sunken)}.progress-cell{display:flex;align-items:center;gap:12px;min-width:170px}.progress-cell .bar{flex:1}.progress-cell .pct{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);width:34px;text-align:right}.warn-text{color:var(--orange-text);font-weight:600}.field{display:flex;flex-direction:column;gap:6px}.field>label,.label{font-weight:600;font-size:14px}.req{color:var(--orange-text);font-weight:500}.input,.select,.textarea{width:100%;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--card);padding:0 14px;height:46px;font-size:15px}.input.sm,.select.sm{height:40px;font-size:14px;padding:0 12px}.textarea{height:auto;min-height:110px;padding:12px 14px;resize:vertical;line-height:1.55}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #00718a2e}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--orange)}.help{font-size:13px;color:var(--muted)}.field-error{font-size:13px;color:var(--orange-text);font-weight:500}.search-input{position:relative}.search-input svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--muted);pointer-events:none}.search-input .input{padding-left:42px}.banner{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--amber-border);background:var(--amber-bg);color:var(--orange-text);font-size:14px}.banner svg{width:18px;height:18px;flex:none;margin-top:1px}.banner.info{border-color:#b3e0ec;background:var(--blue-bg);color:var(--blue-text)}.banner.ok{border-color:#bcdcc6;background:var(--green-bg);color:var(--green)}.radio-card{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border-strong);border-radius:var(--radius);padding:14px 16px;background:var(--card);cursor:pointer}.radio-card input{margin:3px 0 0;width:18px;height:18px;accent-color:var(--primary);flex:none}.radio-card .t{font-weight:600}.radio-card .d{font-size:13.5px;color:var(--muted)}.radio-card:has(input:checked){border:2px solid var(--primary);padding:13px 15px;background:#f0f9fc}.radio-card.revision:has(input:checked){border-color:var(--orange);background:#fdf7f1}.radio-card.revision input{accent-color:var(--orange)}.radio-card:has(input:disabled){cursor:not-allowed;opacity:.7}.radio-card:has(input:focus-visible){box-shadow:var(--focus)}.avatar{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;font-weight:700;background:var(--primary-soft);color:var(--primary)}.avatar.dark{background:var(--primary);color:#fff}.avatar.sand{background:#f7e7cf;color:#7a4a11}.avatar.lg{width:46px;height:46px;font-size:14px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.kpis.three{grid-template-columns:repeat(3,1fr)}.kpi{padding:18px 20px}.kpi .k-label{font-size:13px;color:var(--muted)}.kpi .k-value{font-family:var(--font-display);font-weight:800;font-size:34px;line-height:1.15;margin-top:4px}.kpi .k-value small{font-family:var(--font-body);font-size:15px;font-weight:500;color:var(--muted);margin-left:4px}.kpi.attention{background:var(--amber-bg);border-color:var(--amber-border)}.kpi.attention .k-label,.kpi.attention .k-value,.kpi .k-value.orange{color:var(--orange-text)}.kpi .k-value.navy{color:var(--primary)}.kpi .k-value.green{color:var(--green)}.kpi .k-action{display:inline-block;margin-top:10px}.empty{padding:36px 20px;text-align:center;color:var(--muted)}.empty svg{width:28px;height:28px;margin-bottom:8px;color:var(--faint)}.empty h3{color:var(--text);margin-bottom:4px}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:grid;place-items:center;padding:60px}.skeleton{background:linear-gradient(90deg,#eceef2 25%,#f5f6f8,#eceef2 75%);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:var(--radius)}@keyframes shimmer{to{background-position:-200% 0}}.crumbs{font-size:14px;color:var(--muted)}.crumbs a{color:var(--link)}.crumbs .sep{margin:0 8px;color:var(--faint)}.section-label{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.divider{height:1px;background:var(--border)}.list-rows>*+*{border-top:1px solid var(--border)}.file-tile{width:42px;height:42px;border-radius:var(--radius);display:grid;place-items:center;font-size:10.5px;font-weight:700;letter-spacing:.02em;flex:none}.file-tile.docx{background:var(--blue-bg);color:var(--blue-text)}.file-tile.pdf{background:#fde8dc;color:#a53e0a}.file-tile.xlsx{background:var(--green-bg);color:var(--green)}.toast-host{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--ink-700);color:#fff;padding:12px 16px;border-radius:var(--radius);box-shadow:var(--shadow-lg);font-size:14px;max-width:380px}.toast.error{background:#5c1810}.modal-backdrop{position:fixed;inset:0;background:#161a268c;display:grid;place-items:center;padding:24px;z-index:100;overflow-y:auto}.modal{background:var(--card);border-radius:14px;width:min(720px,100%);box-shadow:var(--shadow-lg);max-height:calc(100vh - 48px);display:flex;flex-direction:column}.modal.sm{width:min(520px,100%)}.modal-head{display:flex;align-items:flex-start;gap:16px;padding:26px 32px 6px}.modal-head h2{font-size:24px}.modal-body{padding:14px 32px 22px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:12px;padding:18px 32px 22px;border-top:1px solid var(--border)}.panel{position:absolute;right:28px;top:calc(var(--topbar-h) - 6px);width:min(400px,calc(100vw - 32px));max-height:70vh;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:50}.notif{display:flex;gap:10px;padding:12px 16px;text-decoration:none;color:inherit;border-top:1px solid var(--border);width:100%;text-align:left;background:none;border-left:0;border-right:0;border-bottom:0;cursor:pointer;font-size:14px}.notif.unread{background:#f0f9fc}.notif .dot{width:8px;height:8px;border-radius:50%;background:var(--orange);margin-top:7px;flex:none}.notif .dot.read{background:transparent}.stepper{display:flex;align-items:center;gap:18px;margin-top:18px;flex-wrap:wrap}.step{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:15px}.step .num{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--border-strong);display:grid;place-items:center;font-size:14px;font-weight:600}.step.done .num{background:var(--primary);border-color:var(--primary);color:#fff}.step.current{color:var(--text);font-weight:600}.step.current .num{border-color:var(--primary);color:var(--primary)}.step-line{width:46px;height:1.5px;background:var(--border-strong)}@media(max-width:1100px){.grid-main-side,.grid-side-main{grid-template-columns:minmax(0,1fr)}.kpis{grid-template-columns:repeat(2,1fr)}}@media(max-width:767px){body{font-size:15px}.shell{display:block}.sidebar{display:none}.sidebar.open{display:flex;position:fixed;inset:0 auto 0 0;width:min(300px,86vw);z-index:120;height:100%}.drawer-backdrop{position:fixed;inset:0;background:#161a2680;z-index:110}.topbar{display:flex;flex-wrap:wrap;align-items:center;height:auto;gap:10px 12px;padding:18px 16px 0;position:static;background:transparent;border-bottom:0}.topbar h1{flex:1 1 100%;font-size:22px;line-height:1.25}.topbar .spacer,.topbar .bell-wrap{display:none}.topbar>.btn{flex:1 1 150px}.topbar>.small{flex:1 1 100%}.mobile-top{display:flex;align-items:center;gap:12px;background:var(--ink-900);color:#fff;height:64px;padding:0 16px;position:sticky;top:0;z-index:30}.mobile-top .brand-name{font-size:21px}.mobile-top .spacer{flex:1}.mobile-top .bell{background:transparent;border:0;color:#fff}.mobile-top .bell .dot{background:var(--amber);color:#2b1a02;border-color:var(--ink-900)}.bottom-bar{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--border);z-index:30;padding-bottom:env(safe-area-inset-bottom)}.bottom-bar a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:9px 2px 10px;font-size:12px;color:var(--muted);text-decoration:none;font-weight:500}.bottom-bar a svg{width:21px;height:21px}.bottom-bar a.active{color:var(--primary);font-weight:700}.content{padding:16px 16px 96px}.page-head{padding:16px}.page-head h1{font-size:22px}.grid-2,.kpis,.kpis.three{grid-template-columns:1fr}.card-pad{padding:18px}.card-head{padding:16px 18px 10px}.modal-head,.modal-body,.modal-foot{padding-left:18px;padding-right:18px}.modal-head h2{font-size:20px}.panel{right:8px;top:60px;position:fixed}.table-wrap{overflow-x:visible}table.data[data-stack="1"],table.data[data-stack="1"] tbody,table.data[data-stack="1"] tr,table.data[data-stack="1"] td{display:block;width:100%}table.data[data-stack="1"] thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}table.data[data-stack="1"] tr{padding:12px 0;border-bottom:1px solid var(--border)}table.data[data-stack="1"] tbody tr:last-child{border-bottom:0}table.data[data-stack="1"] td{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:5px 16px;border:0;text-align:right!important;overflow-wrap:anywhere}table.data[data-stack="1"] td:before{content:attr(data-label);flex:none;max-width:42%;text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}table.data[data-stack="1"] td:first-child{display:block;text-align:left!important;font-size:15px;padding-top:2px}table.data[data-stack="1"] td:first-child:before,table.data[data-stack="1"] td:not([data-label]):before{display:none}table.data[data-stack="1"] td:not([data-label]):not(:first-child){justify-content:flex-end}table.data[data-stack="1"] td:last-child:not([data-label]){padding-bottom:2px}table.data[data-stack="1"] .progress-cell{min-width:0;width:62%}.hide-mobile{display:none!important}}@media(min-width:768px){.show-mobile{display:none!important}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}a.plain,.plain{color:inherit;text-decoration:none}a.plain:hover{text-decoration:underline}.text{color:var(--text)}.plain-list{margin:0;padding-left:18px}.segmented{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;background:var(--card)}.segmented button{border:0;background:transparent;padding:8px 16px;font-weight:500;font-size:14px;cursor:pointer;color:var(--text-2)}.segmented button+button{border-left:1px solid var(--border-strong)}.segmented button.on{background:var(--primary);color:#fff;font-weight:600}.pager{padding:16px 22px;border-top:1px solid var(--border)}.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius);padding:18px;display:flex;align-items:center;justify-content:center;background:var(--card-sunken)}.auth{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}.auth-panel{background:var(--ink-900);color:#fff;padding:64px 64px 56px;display:flex;flex-direction:column;justify-content:space-between;gap:40px}.auth-dept{color:var(--ink-muted);margin-top:8px;font-size:15px}.auth-headline{font-family:var(--font-display);font-weight:800;font-size:clamp(36px,4.2vw,60px);line-height:1.06;letter-spacing:-.025em;max-width:560px}.auth-motif{display:flex;gap:7px;margin:34px 0 30px;max-width:530px}.auth-motif span{height:17px;border-radius:3px;flex:1 1 0}.auth-motif .m1{background:var(--amber)}.auth-motif .m2{background:var(--brand-soft)}.auth-motif .m3{background:var(--brand)}.auth-copy{color:var(--ink-muted);font-size:17px;line-height:1.6;max-width:580px}.auth-foot{color:var(--ink-muted);font-size:13px}.auth-side{display:grid;place-items:center;padding:40px 24px}.auth-card{width:min(458px,100%);padding:40px 36px 34px}.auth-title{font-size:30px}.student-dash{display:flex;flex-direction:column;gap:20px}.project-card{padding:24px 22px 18px}.pc-top{display:grid;grid-template-columns:1fr auto;grid-template-areas:"meta pct" "title pct";column-gap:24px}.pc-top>:first-child{grid-area:meta}.pc-title{grid-area:title;font-size:22px;line-height:1.3;margin-top:10px;max-width:560px}.pc-pct{grid-area:pct;text-align:right;display:flex;flex-direction:column}.pc-pct .big{font-family:var(--font-display);font-weight:800;font-size:44px;line-height:1;color:var(--primary);letter-spacing:-.02em}.task{display:flex;gap:14px;background:var(--card-sunken);border-radius:var(--radius);padding:14px 16px}.task-icon svg{width:18px;height:18px;color:var(--text-2);margin-top:2px}.task-btn{margin-top:12px}.deadlines{list-style:none;margin:10px 0 0;padding:0}.deadlines li{display:flex;align-items:center;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.date-tile{width:36px;display:flex;flex-direction:column;align-items:center}.date-tile .m{font-size:10px;font-weight:600;color:var(--muted);letter-spacing:.04em}.date-tile .d{font-family:var(--font-display);font-weight:800;font-size:22px;line-height:1.05}.deadlines .what,.deadline-rows .what{flex:1;display:flex;flex-direction:column;font-size:14px}.deadline-rows{list-style:none;margin:8px 0 0;padding:0}.deadline-rows li{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--border)}.deadline-rows li:last-child{border-bottom:0}.feedback-body{margin:12px 0;padding:14px 16px;background:var(--card-sunken);border-radius:var(--radius);font-size:15px;line-height:1.6}.milestone-rows{list-style:none;margin:0;padding:0 18px 8px}.milestone-rows li{display:flex;justify-content:space-between;align-items:center;padding:11px 0;border-bottom:1px solid var(--border)}.defence-card{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--card-sunken);color:var(--text-2);font-size:14px}.defence-card svg{width:18px;height:18px;color:var(--muted);flex:none}.topic-list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:12px}.topic-list li{border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.topic-list li.approved{border-color:#b9dbc5;background:#f7fbf8}.decision-note{margin-top:12px;padding:10px 12px;background:var(--green-bg);border-radius:var(--radius-sm);color:var(--green)}.decision-note.warn{background:var(--amber-bg);color:var(--orange-text)}.version{padding:18px 22px}.version.current{border:2px solid var(--primary);padding:17px 21px}.vtag{display:inline-grid;place-items:center;padding:1px 8px;border-radius:5px;font-weight:700;font-size:14px;background:var(--grey-bg);color:var(--text-2)}.vtag.on{background:var(--primary);color:#fff}.file-row{display:flex;align-items:center;gap:14px;margin-top:16px;padding:14px 16px;border-radius:var(--radius);background:var(--card-sunken)}.file-name{word-break:break-word}.note{margin-top:14px;line-height:1.6}.fb{margin-top:16px;padding:14px 18px;border-radius:var(--radius);background:#fbf6ef}.fb.ok{background:var(--green-bg)}.fb-head{font-size:13.5px;font-weight:700;color:var(--orange-text);margin-bottom:6px}.fb.ok .fb-head{color:var(--green)}.fb p{line-height:1.6}.review-grid{grid-template-columns:minmax(0,1fr) 420px}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}.timeline li{display:flex;gap:14px;font-size:14.5px}.tl-dot{width:10px;height:10px;border-radius:50%;margin-top:6px;flex:none}.tl-dot.navy{background:var(--primary)}.tl-dot.orange{background:var(--orange)}.tl-dot.green{background:var(--green)}.tl-dot.grey{background:#8c93a3}.defence-list,.history-list,.session-list,.archive-list{list-style:none;margin:0;padding:0}.defence-list li{padding:14px 0;border-bottom:1px solid var(--border)}.card>.defence-list li{padding:14px 22px}.defence-list li:last-child{border-bottom:0}.defence-list .mono{margin-top:4px}.history-list li{display:grid;grid-template-columns:1.4fr 1.2fr 1.2fr auto;gap:14px;align-items:center;padding:16px 22px;border-top:1px solid var(--border)}.history-list .reason{grid-column:1 / -1;color:var(--text-2)}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:14px;padding:18px 22px 16px}.filters .f-search{grid-column:1 / -1}.filters label{font-size:13.5px}.filter-note{padding:10px 22px;background:var(--amber-bg);color:var(--orange-text);border-top:1px solid var(--amber-border)}.projects-table td{padding-top:14px;padding-bottom:14px}.import-summary{display:grid;grid-template-columns:1.7fr 1fr 1fr;gap:18px}.import-table td.bad-cell{color:var(--orange-text);font-weight:700}.import-table em{font-style:normal}.sup-option{align-items:center}.sup-option input{margin:0}.load-bar{width:84px;height:6px;border-radius:99px;background:var(--border);overflow:hidden}.load-bar span{display:block;height:100%;background:var(--brand)}.load-n{width:82px;text-align:right}.next-box{background:var(--card-sunken);border-radius:var(--radius);padding:16px 18px}.next-box h3{font-family:var(--font-body);font-size:15px;margin-bottom:10px}.next-box ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.next-box li{display:flex;gap:12px;font-size:14.5px;color:var(--text-2)}.next-box svg{width:17px;height:17px;flex:none;margin-top:2px;color:var(--muted)}.next-box svg.ok{color:var(--green)}.session-list li+li{margin-top:6px}.session-btn{width:100%;display:flex;justify-content:space-between;align-items:center;border:1px solid var(--border);background:var(--card);border-radius:var(--radius);padding:10px 12px;cursor:pointer}.session-btn.on{border:2px solid var(--primary);padding:9px 11px}.session-manage{padding-top:12px;border-top:1px solid var(--border)}.ms-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px}.ms-tools .field{min-width:min(100%,200px)}.ms-custom{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;align-items:end;gap:10px 14px;padding:14px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--card-sunken)}.ms-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}.ms-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto 56px auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);background:var(--card)}.ms-grip{color:var(--faint);cursor:grab;display:flex}.ms-name{display:flex;flex-direction:column;gap:3px;min-width:0}.ms-name .strong{overflow-wrap:anywhere}.ms-kind{align-self:flex-start;font-size:11.5px;padding:1px 7px;border-radius:4px;background:var(--primary-soft);color:var(--blue-text)}.ms-kind.date{background:var(--grey-bg);color:var(--grey-text)}.ms-when{display:flex;gap:8px}.ms-when input[type=date]{width:150px}.ms-when input[type=time]{width:104px}.ms-pts{text-align:right;white-space:nowrap}.ms-actions{display:flex;align-items:center;gap:2px}.ms-lock{color:var(--faint);cursor:default}.ms-foot{gap:12px}.ms-pts-inline{display:none}@media(max-width:1100px){.ms-row{grid-template-columns:20px minmax(0,1fr) auto}.ms-when{grid-column:2 / -1;grid-row:2}.ms-when input[type=date],.ms-when input[type=time]{width:auto;flex:1;min-width:0}.ms-pts{display:none}.ms-pts-inline{display:inline}}.archive-grid{grid-template-columns:312px minmax(0,1fr)}.archive-list li+li{margin-top:12px}.archive-item{width:100%;text-align:left;padding:16px 20px;cursor:pointer;font-size:14px;line-height:1.6}.archive-item.on{border:2px solid var(--primary);padding:15px 19px}.af-title{font-size:26px;margin-top:10px}.ro-box{background:var(--card-sunken);border-radius:var(--radius);padding:12px 16px}.ro-label{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:2px}.ro-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.af-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 26px;background:var(--card-sunken);border-top:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.chip-input{border:1px solid var(--border-strong);border-radius:var(--radius);padding:10px 12px;background:var(--card);display:flex;flex-direction:column;gap:10px;cursor:text}.chip-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #00718a2e}.kw-chip{display:inline-flex;align-items:center;gap:10px;background:var(--blue-bg);color:var(--blue-text);border-radius:6px;padding:5px 10px;font-weight:500;font-size:14px}.kw-chip button{border:0;background:none;padding:0;display:grid;cursor:pointer;color:inherit}.chip-input-field{border:0;outline:none;padding:4px 2px;font-size:15px;background:transparent}.chip-input-field:focus-visible{box-shadow:none}.repo-hero{background:var(--ink-900);color:#fff;padding:30px 28px 24px}.repo-hero h1{color:#fff;font-size:26px}.repo-hero p{color:var(--ink-muted);margin-top:4px;font-size:14px}.repo-search{display:flex;gap:8px;margin-top:18px;max-width:820px}.repo-search .btn{width:92px}.repo-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:10px;margin-bottom:18px}.repo-filters label{font-size:12px}.result-count{margin-bottom:14px}.results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}.result{display:flex;gap:18px;padding:18px 18px 18px 20px}.result-main{flex:1;min-width:0}.result-title{font-size:17px;line-height:1.35;margin-top:4px}.result .tag+.result-title{margin-top:8px}.result-meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px}.result-abstract{margin-top:8px;color:var(--text-2);line-height:1.6}.result-side{display:flex;flex-direction:column;align-items:flex-end;gap:10px;flex:none}.chat{display:grid;grid-template-columns:410px minmax(0,1fr);height:100vh}.chat-list{border-right:1px solid var(--border);background:var(--card);display:flex;flex-direction:column;min-height:0}.chat-list-head{padding:24px 18px 14px}.chat-list-head h1{font-size:26px}.conv-list{list-style:none;margin:0;padding:0;overflow-y:auto;border-top:1px solid var(--border)}.conv{display:flex;gap:14px;padding:16px 18px;border-bottom:1px solid var(--border);color:inherit;text-decoration:none}.conv:hover{background:var(--card-sunken)}.conv.on{background:#e6f5f9}.conv-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.conv-name{font-size:15.5px}.conv-preview{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14.5px}.role-tag{color:#8a5a17;font-weight:600;font-size:13px}.unread{min-width:22px;height:22px;border-radius:999px;background:var(--orange);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center;padding:0 6px;flex:none}.chat-thread{display:flex;flex-direction:column;min-height:0;background:var(--canvas)}.thread-head{display:flex;align-items:center;gap:14px;padding:18px 28px;background:var(--card);border-bottom:1px solid var(--border)}.presence{width:8px;height:8px;border-radius:50%;background:#a8aebb}.presence.on{background:#2a9a5d}.online-text{color:var(--green);font-weight:500}.thread-body{flex:1;overflow-y:auto;padding:24px 28px;display:flex;flex-direction:column;gap:14px}.earlier{display:flex;flex-direction:column;gap:4px;align-items:center}.day-divider{text-align:center;margin:4px 0}.day-divider span{display:inline-block;padding:3px 14px;border-radius:999px;background:var(--grey-bg);color:var(--muted);font-size:13px}.msg{display:flex;flex-direction:column;align-items:flex-start;gap:6px;max-width:72%}.msg.mine{align-self:flex-end;align-items:flex-end}.bubble{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 16px;font-size:15.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word}.msg.mine .bubble{background:var(--primary);border-color:var(--primary);color:#fff}.file-card{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px 16px;min-width:300px;max-width:100%}.msg-time{font-size:12.5px;color:var(--muted)}.composer{background:var(--card);border-top:1px solid var(--border);padding:18px 28px 14px}.composer .attach{width:50px;height:50px;padding:0}.composer .input{height:50px}.composer .send{height:50px;padding:0 22px;font-size:15px}.composer.read-only{display:flex;gap:10px;align-items:center;color:var(--muted);padding:20px 28px}@media(max-width:1100px){.review-grid,.archive-grid{grid-template-columns:minmax(0,1fr)}.import-summary{grid-template-columns:1fr 1fr}.import-summary>:first-child{grid-column:1 / -1}.chat{grid-template-columns:320px minmax(0,1fr)}}@media(max-width:900px){.auth{grid-template-columns:1fr}.auth-panel{padding:32px 24px;gap:20px}.auth-headline{font-size:34px}}@media(max-width:767px){.auth-panel .auth-motif{margin:20px 0}.auth-panel .auth-copy{font-size:15px}.auth-card{padding:26px 20px}.student-dash{gap:16px}.student-dash .dash-row{display:contents}.student-dash .project-card{order:1}.student-dash .next-card{order:2}.student-dash .feedback-card{order:3}.student-dash .deadlines-card{order:4}.student-dash .milestones-card{order:5}.student-dash .defence-card{order:6}.project-card{padding:20px 20px 18px}.pc-top{grid-template-columns:1fr;grid-template-areas:"meta" "title" "pct"}.pc-title{font-size:23px}.pc-pct{flex-direction:row;align-items:baseline;gap:10px;text-align:left;margin-top:14px}.pc-pct .big{font-size:46px}.task-btn{width:100%;height:48px;font-size:16px}.feedback-body{background:none;padding:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.feedback-body.full{display:block}.filters,.repo-filters,.ro-grid,.import-summary{grid-template-columns:minmax(0,1fr)}.history-list li{grid-template-columns:1fr;gap:4px}.ms-custom{grid-template-columns:minmax(0,1fr)}.repo-hero{padding:20px 16px}.repo-search .btn{width:auto}.result{flex-direction:column}.result-side{align-items:flex-start}.af-foot{flex-direction:column-reverse;align-items:stretch}.chat{display:block;height:auto}.chat.has-thread .chat-list{display:none}.chat:not(.has-thread) .chat-thread{display:none}.chat-thread{height:calc(100vh - 126px)}.thread-head,.thread-body,.composer{padding-left:14px;padding-right:14px}.msg{max-width:88%}.file-card{min-width:0}.composer .send{padding:0 14px}}.repo-hero .input{color:var(--text)}@media(min-width:768px){.shell{background:linear-gradient(to right,var(--ink-900) var(--sidebar-w),var(--canvas) var(--sidebar-w))}}.radio-card>span,.file-row>div,.conv-main,.archive-item{min-width:0;overflow-wrap:anywhere}.search-row{display:flex;gap:8px;flex:1 1 240px;max-width:420px;min-width:0}.search-row .input{flex:1 1 auto;min-width:0}.auto-loads{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:6px 16px}.auto-loads li{display:flex;justify-content:space-between;gap:8px;padding:6px 10px;border-radius:var(--radius-sm);background:var(--card-sunken);font-size:14px}.panel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:14px}.panel-card{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--border);border-top:3px solid var(--brand);border-radius:0 0 var(--radius) var(--radius);background:var(--card)}.panel-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:8px}.panel-members{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.panel-members li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--card-sunken)}.panel-members li>div{min-width:0}.panel-members select{width:auto;max-width:130px;flex-shrink:0}.panel-members.unplaced{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr))}.danger-text{color:var(--danger)}.check{display:inline-flex;align-items:center;gap:8px;font-size:14px}.fb-history{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.fb-text{margin:10px 0 8px;white-space:pre-wrap;overflow-wrap:anywhere}
