@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}:root{--ink: #1a0f2e;--ink-soft: #554d66;--paper: #f6f5f9;--surface: #ffffff;--line: #e6e3ee;--brand: #5b2bd1;--brand-wash: #efe9fd;--amber: #c98a1b;--amber-wash: #f8eedb;--rust: #b5531d;--rust-wash: #f6e4d9;--seal: #b8342a;--seal-wash: #f6e1de;--idle: #8d879e;--idle-wash: #eeedf3}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}a{color:var(--brand)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.app-brand{display:flex;align-items:center;gap:10px;padding:20px 20px 18px;color:#fff;font-size:16px;font-weight:600;letter-spacing:.02em}.app-brand-mark{width:28px;height:28px;border-radius:7px}.app-main{padding:28px 36px 64px;max-width:1440px;width:100%;margin:0 auto;box-sizing:border-box}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-title{margin:0;font-size:24px;font-weight:600;line-height:1.25}.page-sub{margin:6px 0 0;color:var(--ink-soft);max-width:68ch}.section-title{margin:0 0 12px;font-size:16px;font-weight:600}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px}.muted{color:var(--ink-soft)}.small{font-size:12.5px}.mono-ref{font-family:IBM Plex Sans,sans-serif;font-weight:600;letter-spacing:.01em;white-space:nowrap}.clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.prewrap{white-space:pre-wrap;word-break:break-word}.pkey{display:inline-flex;align-items:center;height:22px;padding:0 7px;border-radius:4px;background:var(--ink);color:#fff;font-family:IBM Plex Sans,sans-serif;font-size:12px;font-weight:600;letter-spacing:.06em}.pkey-lg{height:auto;padding:6px 12px;font-size:22px;letter-spacing:.08em;border-radius:6px}.pill{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:11px;font-size:12.5px;white-space:nowrap}.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.tone-idle{color:#5f5873;background:var(--idle-wash)}.tone-active{color:var(--brand);background:var(--brand-wash)}.tone-waiting{color:#8f5f0b;background:var(--amber-wash)}.tone-warn{color:var(--rust);background:var(--rust-wash)}.tone-done{color:var(--seal);background:var(--seal-wash)}.seal{display:inline-block;color:var(--seal);transform:rotate(-12deg);flex:none}.seal svg{display:block}@media(prefers-reduced-motion:no-preference){.seal-stamp{animation:stamp .26s cubic-bezier(.2,.8,.3,1.2)}@keyframes stamp{0%{transform:rotate(-12deg) scale(1.6);opacity:0}to{transform:rotate(-12deg) scale(1);opacity:1}}}.progress-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--idle-wash)}.progress-bar>span{display:block;height:100%}.progress-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:12.5px;color:var(--ink-soft)}.progress-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:0}.progress-figure{display:flex;align-items:baseline;gap:8px}.progress-figure strong{font-family:IBM Plex Sans,sans-serif;font-size:28px;font-weight:600;line-height:1}.todo-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer}.todo-item:last-child{border-bottom:none}.todo-item:hover{background:#f5f3fa}.todo-title{font-weight:500}.todo-reason{margin-top:2px;font-size:12.5px;color:var(--ink-soft)}.project-grid{display:grid;grid-template-columns:240px minmax(0,1fr);gap:28px;align-items:start}.module-index{position:sticky;top:20px;padding:8px 0;max-height:calc(100vh - 40px);overflow:auto}.module-index ol{list-style:none;margin:0;padding:0;counter-reset:mod}.module-index li a{display:grid;grid-template-columns:26px 1fr auto;gap:4px;padding:7px 10px;border-radius:6px;color:var(--ink);text-decoration:none;font-size:13.5px;counter-increment:mod}.module-index li a:before{content:counter(mod);color:var(--idle);font-family:IBM Plex Sans,sans-serif;font-size:12px;padding-top:1px}.module-index li a:hover{background:#eceaf2}.module-index .pct{color:var(--ink-soft);font-size:12px}.module-block{margin-bottom:26px;scroll-margin-top:16px}.module-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 20px 12px}.module-name{margin:0;font-size:17px;font-weight:600}.cap-row{display:grid;grid-template-columns:minmax(0,1fr) 140px 120px auto;align-items:center;gap:16px;padding:12px 20px;border-top:1px solid var(--line);cursor:pointer}.cap-row:hover{background:#f7f6fb}.cap-row.is-archived{opacity:.55}.module-block.is-archived .module-head,.module-index li.is-archived{opacity:.6}.cap-title{font-weight:500}.cap-desc{margin-top:2px;font-size:12.5px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cap-seal-slot{width:48px;display:flex;justify-content:center}.highlight{box-shadow:inset 3px 0 0 var(--brand);background:#f1ecfd}.stage-track{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;list-style:none;margin:0 0 20px;padding:0}.stage-track li{padding-top:10px;border-top:4px solid var(--idle-wash);font-size:12.5px;color:var(--idle);text-align:center}.stage-track li.is-done{border-color:var(--brand);color:var(--ink-soft)}.stage-track li.is-current{border-color:var(--brand);color:var(--ink);font-weight:600}.board{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}.board-col{background:#eceaf1;border-radius:10px;padding:10px;min-height:240px}.board-col-head{display:flex;justify-content:space-between;align-items:center;padding:2px 4px 10px;font-weight:600;font-size:13.5px}.board-col-head .step{color:var(--idle);font-family:IBM Plex Sans,sans-serif;font-weight:500;margin-right:6px}.board-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:pointer}.board-card:hover{border-color:#c4bdd6}.board-card .meta{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--ink-soft)}.prio-high{color:var(--rust);font-weight:600}.activity-item{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px}.activity-item time{color:var(--ink-soft);font-size:12.5px}.auth-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,460px)}.auth-side{background:var(--ink);color:#ece8f5;padding:56px;display:flex;flex-direction:column;justify-content:space-between}.auth-side h1{margin:0;font-size:40px;font-weight:600;line-height:1.15;color:#fff}.auth-side p{max-width:34em;color:#b9b2cc;line-height:1.8}.auth-flow{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px;color:#b9b2cc;font-size:13px}.auth-flow span{padding:4px 10px;border:1px solid #3a2a5e;border-radius:14px}.auth-form{padding:56px 48px;display:flex;flex-direction:column;justify-content:center;background:var(--surface)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.pinboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px}@media(max-width:960px){.two-col,.pinboard-grid,.project-grid{grid-template-columns:1fr}.module-index{position:static;max-height:none}.cap-row{grid-template-columns:minmax(0,1fr) auto}.cap-row .cap-reqs,.cap-row .cap-seal-slot{display:none}.auth-wrap{grid-template-columns:1fr}.auth-side,.auth-form{padding:32px 24px}.app-main{padding:20px 16px 48px}}:root{--grain: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.10  0 0 0 0 0.06  0 0 0 0 0.18  0 0 0 .045 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");--grain-light: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .05 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");--shadow-1: 0 1px 0 rgba(26, 15, 46, .04), 0 1px 2px rgba(26, 15, 46, .06);--shadow-2: 0 1px 0 rgba(26, 15, 46, .04), 0 6px 16px -6px rgba(26, 15, 46, .16);--shadow-3: 0 2px 0 rgba(26, 15, 46, .03), 0 18px 40px -16px rgba(14, 6, 30, .45)}body{background-color:var(--paper);background-image:var(--grain)}.panel{box-shadow:var(--shadow-1)}.nav-root{min-height:100vh;display:flex;flex-direction:column;background-color:var(--ink);background-image:var(--grain-light)}.nav-scroll{flex:1;overflow-y:auto;padding-bottom:12px}.nav-group-label{padding:18px 24px 6px;color:#7d7396;font-size:12px;letter-spacing:.04em}.nav-root .ant-menu-dark .ant-menu-item-selected{box-shadow:inset 3px 0 #b48cff}.nav-projects{list-style:none;margin:0;padding:0 12px}.nav-projects a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:7px 12px;border-radius:6px;color:#cbc5dc;text-decoration:none;font-size:13px}.nav-projects a:hover{background:#261a40;color:#fff}.nav-projects a.is-active{background:#2e1f4d;color:#fff}.nav-projects .pkey{background:#35265a;color:#ece8f5;height:20px;font-size:11px}.nav-projects .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-projects .pct{color:#948bab;font-size:12px}.nav-foot{display:flex;align-items:center;gap:10px;padding:14px 16px 16px 20px;border-top:1px solid #2e1f4d;color:#b9b2cc;font-size:13px}.nav-foot .who{flex:1;min-width:0;line-height:1.35}.nav-foot .who strong{display:block;color:#fff;font-weight:500}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:16px;height:56px;padding:0 36px;background:#f6f5f9db;-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--line)}.topbar-crumbs{flex:1;min-width:0;display:flex;align-items:center;gap:8px;color:var(--ink-soft);font-size:13.5px;white-space:nowrap;overflow:hidden}.topbar-crumbs a{color:var(--ink-soft)}.topbar-crumbs .sep{color:#b8b2c6}.topbar-crumbs .current{color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis}.topbar-search{width:300px}.topbar-search kbd{font-family:IBM Plex Sans,sans-serif;font-size:11px;padding:1px 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;color:var(--ink-soft);background:#fff}@media(max-width:960px){.topbar{padding:0 12px;height:52px}.topbar-search{width:auto;flex:1}.topbar-crumbs{display:none}}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:50%;color:#fff;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.who-chip{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}.avatar-stack{display:inline-flex}.avatar-stack .avatar+.avatar{margin-left:-6px;box-shadow:0 0 0 2px var(--surface)}.overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:24px;overflow:hidden}.overview-cell{padding:16px 20px 18px;border-left:1px solid var(--line)}.overview-cell:first-child{border-left:none}.overview-cell .label{color:var(--ink-soft);font-size:13px}.overview-cell .value{margin-top:6px;font-family:IBM Plex Sans,sans-serif;font-size:26px;font-weight:600;line-height:1.1}.overview-cell .value small{font-size:14px;font-weight:500;color:var(--ink-soft);margin-left:4px}.overview-cell .note{margin-top:4px;font-size:12.5px;color:var(--ink-soft)}.overview-cell.is-seal .value{color:var(--seal)}@media(max-width:960px){.overview{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-cell:nth-child(3){border-left:none}.overview-cell:nth-child(n+3){border-top:1px solid var(--line)}}.timeline-day{margin:14px 0 6px;color:var(--ink-soft);font-size:12.5px}.timeline-day:first-child{margin-top:0}.timeline-row{display:grid;grid-template-columns:24px minmax(0,1fr) auto;gap:10px;padding:8px 0;position:relative;font-size:13.5px}.timeline-row:before{content:"";position:absolute;left:11.5px;top:34px;bottom:-8px;width:1px;background:var(--line)}.timeline-row:last-child:before{display:none}.timeline-row time{color:var(--idle);font-size:12px;padding-top:2px}.empty-state{display:grid;justify-items:center;gap:6px;padding:28px 20px;text-align:center}.empty-state svg{margin-bottom:6px}.empty-state strong{font-size:14.5px;font-weight:600}.empty-state p{margin:0;max-width:42ch;color:var(--ink-soft);font-size:13px;line-height:1.7}.signin{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(400px,1fr)}.signin-stage{position:relative;overflow:hidden;display:flex;flex-direction:column;padding:40px 56px 36px;color:#ece8f5;background-color:var(--ink);background-image:var(--grain-light),linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),radial-gradient(60% 50% at 85% 10%,rgba(110,40,230,.32),transparent 70%),radial-gradient(50% 45% at 0% 100%,rgba(220,40,210,.18),transparent 70%);background-size:auto,32px 32px,32px 32px,auto,auto}.signin-brand{display:flex;align-items:center;gap:12px;font-size:17px;font-weight:600;color:#fff}.signin-brand img{border-radius:8px}.signin-mark{display:block;margin-bottom:18px}.signin-copy{margin-top:56px;max-width:30em}.signin-copy h1{margin:0;color:#fff;font-size:34px;font-weight:600;line-height:1.3;letter-spacing:.01em}.signin-copy p{margin:14px 0 0;color:#a89fc0;line-height:1.8;font-size:15px}.showcase{position:relative;flex:1;min-height:410px;margin:40px 0 28px}.sc-card{position:absolute;background:#fff;color:var(--ink);border-radius:10px;box-shadow:var(--shadow-3);padding:16px 18px}.sc-project{left:0;top:8px;width:340px}.sc-req{left:150px;top:178px;width:400px}.sc-cap{left:24px;top:318px;width:380px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px}.sc-feishu{left:372px;top:0;width:260px;padding:0;overflow:hidden}.sc-feishu-head{padding:10px 14px;background:#c98a1b;color:#fff;font-weight:600;font-size:13.5px}.sc-feishu-body{padding:10px 14px 14px;font-size:12.5px;color:var(--ink-soft);line-height:1.7}.sc-feishu-body strong{color:var(--ink)}.sc-feishu-actions{display:flex;gap:8px;margin-top:10px}.sc-feishu-actions span{padding:3px 10px;border-radius:5px;font-size:12px;border:1px solid var(--line)}.sc-feishu-actions span:first-child{background:var(--brand);border-color:var(--brand);color:#fff}.sc-title{font-weight:600;font-size:14.5px}.sc-meta{margin-top:4px;color:var(--ink-soft);font-size:12.5px}.sc-track{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:12px}.sc-track i{height:4px;border-radius:2px;background:var(--idle-wash)}.sc-track i.on{background:var(--brand)}.sc-track i.now{background:var(--amber)}.sc-row{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:12.5px;color:var(--ink-soft)}.signin-points{display:flex;flex-wrap:wrap;gap:10px 28px;color:#b9b2cc;font-size:13px}.signin-points span{display:inline-flex;align-items:center;gap:8px}.signin-points .anticon{color:#b48cff}.signin-panel{display:grid;place-items:center;padding:40px 32px;background-color:var(--paper);background-image:var(--grain)}.signin-card{width:100%;max-width:400px;padding:36px 36px 28px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-2)}.signin-card h2{margin:0;font-size:22px;font-weight:600}.signin-card .lead{margin:8px 0 26px;color:var(--ink-soft)}.signin-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;color:var(--ink-soft);font-size:12.5px}.feishu-btn.ant-btn{height:44px;font-weight:500}@media(prefers-reduced-motion:no-preference){.sc-cap .seal{animation:stamp .42s .7s cubic-bezier(.2,.8,.3,1.2) both}}@media(max-width:1200px){.sc-feishu{display:none}}@media(max-width:960px){.signin{grid-template-columns:1fr}.signin-stage{padding:28px 24px}.signin-copy{margin-top:28px}.signin-copy h1{font-size:26px}.showcase{display:none}.signin-points{margin-top:24px}.signin-panel{padding:28px 16px 40px}.signin-card{padding:28px 22px 22px}}.project-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px 32px;padding:24px 26px 20px;margin-bottom:24px}.project-hero-main{display:flex;gap:18px;align-items:flex-start}.project-hero-side{display:grid;gap:10px;justify-items:end;align-content:start}.project-hero-progress{grid-column:1 / -1}.stage-chips{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);color:var(--ink-soft);font-size:12.5px}.stage-chips strong{color:var(--ink);font-family:IBM Plex Sans,sans-serif;margin-left:2px}.project-hero-actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px}.module-index li a .mini-bar{grid-column:2 / 4;height:3px;border-radius:2px;background:var(--idle-wash);overflow:hidden}.module-index li a .mini-bar i{display:block;height:100%;background:var(--seal)}@media(max-width:960px){.project-hero{grid-template-columns:1fr;padding:18px}.project-hero-side{justify-items:start}}.board-col{background:#e6e3ee8c;border-top:3px solid var(--idle)}.board-col.col-active{border-top-color:var(--brand)}.board-col.col-waiting{border-top-color:var(--amber)}.board-col.col-done{border-top-color:var(--seal)}.board-card{box-shadow:var(--shadow-1)}.board-card:hover{box-shadow:var(--shadow-2)}.board-col{min-height:calc(100vh - 230px)}.board-card .meta{white-space:nowrap;gap:8px}.board-card .meta>:first-child{overflow:hidden;text-overflow:ellipsis}.board-empty{margin:4px 2px;padding:18px 8px;border:1px dashed #d3cee0;border-radius:8px;color:var(--idle);font-size:12.5px;text-align:center}
