@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{--bg:#f9f8f8;--ink:#1e232c;--muted:#6d7482;--blue:#4d6bfe;--line:#e5e6eb;--pale:#eef1ff;--radius:20px;font-family:"DM Sans","Noto Sans SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none;scroll-behavior:smooth;scroll-padding-top:94px}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{cursor:not-allowed;opacity:.42}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #748aff;outline-offset:4px}h1,h2,h3,p{margin:0}button{color:inherit}button:hover:not(:disabled),a:hover{transition:.2s}fieldset{padding:0;border:0;margin:0;min-width:0}.wrap{max-width:1200px;margin:auto;padding-left:28px;padding-right:28px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip{position:fixed;left:20px;top:-80px;z-index:100;background:white;padding:12px}.skip:focus{top:12px}.header{height:84px;padding:0 4.5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e7e8ec;background:#f9f8f8e8;backdrop-filter:blur(16px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px;font-size:19px;letter-spacing:-.6px;white-space:nowrap}.brand strong{font-weight:500;color:var(--muted)}.brand-icon{background:var(--blue);color:white;width:30px;height:30px;display:grid;place-items:center;border-radius:9px;font-size:32px;line-height:1;font-weight:600}.header nav{display:flex;gap:36px;font-size:14px;color:#5d6470}.header nav a:hover,.github-link:hover{color:var(--blue)}.github-link{font-size:14px;display:flex;gap:13px}.hero{text-align:center;padding-top:70px;padding-bottom:78px;position:relative;overflow:hidden}.eyebrow{font-size:11px;letter-spacing:1px;color:#626c82;display:flex;justify-content:center;align-items:center;gap:10px}.status-dot{display:inline-block;width:6px;height:6px;background:var(--blue);border-radius:50%;flex-shrink:0}.eyebrow-divider{height:12px;width:1px;background:#d6d9e0;margin:0 3px}.hero h1{font-size:clamp(40px,5.2vw,68px);font-weight:500;letter-spacing:-3px;line-height:1.3;margin:25px 0 22px;position:relative;z-index:1}.blue{color:var(--blue)}.hero-description{font-size:16px;color:var(--muted);line-height:1.9;position:relative;z-index:1}.hero-actions{display:flex;justify-content:center;gap:12px;margin-top:29px}.button{border:1px solid transparent;border-radius:100px;display:inline-flex;align-items:center;justify-content:center;gap:16px;padding:14px 25px;font-weight:500;font-size:14px;min-height:47px}.primary{background:#1a191b;color:white}.primary:hover{background:#35363e;transform:translateY(-1px)}.secondary{background:#ffffff80;border-color:#d6d9e2}.secondary:hover{background:#fff;border-color:#a9afbf}.tiny-tag{font-size:10px;color:#757d8b;background:#e9ebf1;padding:3px 6px;border-radius:4px}.hero-note{font-size:11px;color:#87909f;letter-spacing:.3px;margin-top:19px}.hero-note span{padding:0 10px}.hero-orbit{position:absolute;width:780px;height:240px;border:1px solid #e7eafa;left:50%;top:77px;transform:translateX(-50%) rotate(-12deg);border-radius:50%;z-index:-1;opacity:.8}.hero-orbit:after,.hero-orbit:before{content:"";position:absolute;inset:25px -40px;border:1px solid #e9ecf7;border-radius:50%;transform:rotate(20deg)}.hero-orbit span{position:absolute;width:6px;height:6px;border-radius:50%;background:#bdc9fa;top:60px;left:20px}.hero-orbit span:nth-child(2){left:auto;right:0;top:120px}.section-top{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:25px}.overline{font-family:"DM Sans",sans-serif;font-size:10px;letter-spacing:1.7px;color:#8991a0;font-weight:500}.section-top h2,h2{font-size:29px;letter-spacing:-.8px;font-weight:500;line-height:1.5}.section-top h2{margin-top:10px}.text-button{padding:0;background:none;border:0;color:#667089;font-size:12px;display:inline-flex;align-items:center;gap:8px}.text-button:hover:not(:disabled){color:var(--blue)}.workbench{border:1px solid #dce0e9;border-radius:18px;background:white;box-shadow:0 14px 56px #23375209;overflow:hidden}.workbench-top{height:49px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:13px;padding:0 20px;background:#fcfcfd}.window-dots{display:flex;gap:5px}.window-dots i{width:7px;height:7px;background:#d6dae3;border-radius:50%}.window-dots i:first-child{background:#bec8e2}.workspace-name{font-size:11px;color:#7c8391}.simulation-badge{margin-left:auto;display:flex;gap:6px;align-items:center;font-size:10px;color:#5a6db3;background:#f0f3ff;padding:5px 9px;border-radius:5px}.workbench-body{display:grid;grid-template-columns:272px minmax(0,1fr)}.config-panel{padding:24px 22px;background:#f9fafc;border-right:1px solid var(--line)}.panel-heading{font-size:13px;font-weight:600;display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.mono{font-family:Consolas,monospace;font-size:9px;color:#9ca3b0;font-weight:400}.field-label{display:flex;gap:5px;align-items:center;font-size:12px;margin-bottom:9px}.info-label{margin-left:auto;font-size:9px;color:#9298a4}select{width:100%;border:1px solid #dfe3ed;border-radius:8px;background:white;color:#3b4454;padding:10px 9px;font-size:11px;min-height:38px}.scenario-description{font-size:10px;line-height:1.8;color:#8991a0;margin:10px 0 23px}.range-heading{display:flex;align-items:center;justify-content:space-between;margin-top:24px;font-size:11px}.range-heading label span{color:#939aa8;font-size:9px;margin-left:3px}.range-heading output{font-family:Consolas,monospace;color:#4a63cd;font-size:12px}input[type=range]{accent-color:var(--blue);width:100%;height:4px;margin:16px 0 8px;cursor:pointer}.range-scale{display:flex;justify-content:space-between;color:#9da3ae;font-size:9px}.toggle-row{display:flex;align-items:center;justify-content:space-between;margin-top:25px;font-size:12px}.toggle-row small{display:block;font-size:9px;color:#969daa;margin-top:5px}input[role=switch]{appearance:none;width:30px;height:18px;border-radius:20px;background:#c7ccd6;position:relative;flex-shrink:0;cursor:pointer}input[role=switch]:checked{background:var(--blue)}input[role=switch]:before{content:"";position:absolute;top:3px;left:3px;width:12px;height:12px;background:white;border-radius:50%;transition:.2s}input[role=switch]:checked:before{transform:translateX(12px)}.budget-box{margin:28px 0 20px;border-top:1px solid var(--line);padding-top:19px}.budget-box>div:first-child{display:flex;justify-content:space-between;font-size:10px;color:#838b9a}.budget-box strong{font-family:Consolas,monospace;color:#5e6b86;font-weight:400}.budget-track{height:4px;background:#e5e9f1;margin:10px 0;border-radius:8px;overflow:hidden}.budget-track span{display:block;background:#899bf1;height:100%;transition:width .25s}.budget-box p{font-size:9px;color:#979daa;line-height:1.5}.blue-button{width:100%;background:var(--blue);color:white;border-radius:9px;min-height:42px;font-size:12px;padding:10px}.blue-button:hover{background:#3c59ec}.reset-button{display:block;margin:13px auto;font-size:10px}.config-footnote{font-size:9px;color:#a0a6b1;line-height:1.8;text-align:center;margin-top:19px}.experiment-panel{padding:24px 27px 18px;min-width:0}.experiment-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.experiment-heading .overline{font-size:8px;letter-spacing:1.3px}.experiment-heading h3{font-size:18px;font-weight:500;margin-top:7px}.run-status{font-size:10px;padding:5px 9px;border-radius:5px;background:#f0f3f8;color:#7e899d;white-space:nowrap}.run-status.running{color:var(--blue);background:#eef1ff}.run-status.complete{color:#29805b;background:#eef8f2}.run-status.error{color:#be5b42;background:#fff0ea}.pipeline{display:flex;align-items:center;justify-content:space-between;margin:25px 0 23px;gap:10px}.stage{display:flex;align-items:center;gap:10px;opacity:.6;transition:.3s}.stage-icon{width:30px;height:30px;border:1px solid #dce1ed;border-radius:9px;display:grid;place-items:center;font-size:10px;color:#9aa4bb}.stage strong{font-size:11px;font-weight:500;display:block}.stage small{font-size:9px;color:#8f98a6;display:block;margin-top:3px}.stage-arrow{font-size:14px;color:#c3cbdb}.stage.active,.stage.done{opacity:1}.stage.active .stage-icon{color:var(--blue);border-color:#b8c4ff;background:#eef1ff;box-shadow:0 0 0 3px #4d6bfe09}.stage.done .stage-icon{background:#f0f4ff;color:#627ad5}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.metrics>div{background:#f8f9fc;border:1px solid #eef0f5;border-radius:9px;padding:14px 15px}.metrics span{font-size:10px;color:#8a92a0;display:flex;align-items:center;gap:6px}.metrics strong{display:block;font-family:"DM Sans",sans-serif;font-size:29px;font-weight:500;letter-spacing:-1px;margin:6px 0 3px}.metrics small{font-size:8px;color:#929aaa}.help{border:1px solid #ccd2df;background:none;color:#939eaf;border-radius:50%;font-size:8px;padding:0;width:12px;height:12px;line-height:10px}.chart-box{margin-top:22px}.chart-title{display:flex;justify-content:space-between;font-size:9px;color:#929baa;margin-bottom:8px}.chart-title>span:first-child{color:#6e7990;display:flex;align-items:center;gap:6px}.chart-dot{width:5px;height:5px;border-radius:50%;background:var(--blue)}#chart{display:block;width:100%;height:112px}.chart-axis{display:flex;justify-content:space-between;font-size:8px;color:#a7adba}.console{margin-top:18px;border-radius:9px;background:#20242d;color:#c3cbd8;overflow:hidden}.console-top{padding:10px 14px;border-bottom:1px solid #ffffff0c;display:flex;justify-content:space-between;font-size:9px;color:#8b96a8}.console-top>span{display:flex;gap:6px;align-items:center}.console-top>span:last-child{font-family:Consolas,monospace;font-size:8px;letter-spacing:1px}.console-dot{width:5px;height:5px;border-radius:50%;background:#8795ba}.logs{height:101px;overflow:auto;padding:11px 14px;font:10px/1.85 Consolas,"Noto Sans SC",monospace;scrollbar-width:thin}.logs p{margin:0 0 3px;overflow-wrap:anywhere}.logs time{color:#667084;margin-right:11px}.log-blue{color:#92a7ff;margin-right:8px}.log-muted{color:#7f8ba0;margin-right:8px}.log-error{color:#ffa687;margin-right:8px}.sample-output{padding:10px 14px 13px;background:#ffffff03;border-top:1px solid #ffffff09}.sample-output>span{font-size:8px;color:#8190a8}.sample-output p{font-size:10px;line-height:1.8;color:#c7d0e1;margin-top:4px;min-height:18px}.feedback{display:flex;gap:8px;margin-top:13px;background:#f2f5ff;border-radius:7px;padding:9px 12px;font-size:10px;color:#7b8aad;line-height:1.7;align-items:center}.feedback-icon{font-size:14px;color:#6e86de}.feedback.error{background:#fff3ed;color:#a26246}.feedback button{border:0;background:white;color:#a26246;white-space:nowrap;padding:5px 8px;font-size:10px;border-radius:4px;margin-left:auto}.experiment-actions{display:flex;justify-content:space-between;gap:10px;margin-top:14px;font-size:9px;color:#a4abb8;align-items:center}.experiment-actions button{font-size:10px}.lab-footer{display:flex;align-items:center;gap:20px;padding:11px 20px;border-top:1px solid var(--line);font-size:9px;color:#949dac;background:#fcfcfd}.lab-footer>span:first-child{display:flex;align-items:center;gap:6px}.lab-footer>button{margin-left:auto;font-size:10px}.lab-footer .status-dot{background:#8ca39a;width:5px;height:5px}#history-count{background:#edf0f6;padding:2px 5px;border-radius:4px}.lab-caption{text-align:center;font-size:11px;color:#98a0ad;margin-top:21px}.how-section{padding-top:100px;padding-bottom:80px}.section-top>p{font-size:12px;color:#8d95a3;line-height:1.9}.learning-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:38px;margin-top:39px}.learning-grid article{border-top:1px solid #dfe3ed;padding-top:22px}.step-number{font-size:9px;color:#8793ab;letter-spacing:1px}.learning-grid h3{font-size:18px;font-weight:500;margin-bottom:13px}.learning-grid p{font-size:12px;line-height:1.9;color:#8b93a1;max-width:300px}.mini-config{height:127px;padding:27px 20px 0;width:80%;font:10px Consolas,monospace;color:#8f9aaf}.mini-config span{display:flex;justify-content:space-between}.mini-config b{font-weight:400;color:var(--blue)}.mini-config i{display:block;position:relative;height:3px;background:#e1e6f3;margin:10px 0 15px}.mini-config i:after{content:"";display:block;width:45%;height:3px;background:#a5b5fb}.mini-config i:last-child:after{width:70%}.mini-flow{height:127px;display:flex;gap:8px;align-items:center;padding:0 24px}.mini-flow i{display:block;flex:1;max-width:12px;height:24%;background:#c9d4ff;border-radius:3px}.mini-flow i:nth-child(3n){height:57%;background:#869cf9}.mini-flow i:nth-child(3n + 2){height:39%;background:#aabafa}.mini-error{height:127px;display:flex;justify-content:center;flex-direction:column;padding:0 20px;gap:13px}.mini-error span{font-size:9px;letter-spacing:1px;color:#be9573}.mini-error b{font-weight:400;font-size:11px;color:#7d8ca7}.roadmap-section{padding-top:20px;padding-bottom:85px}.roadmap-section>h2{margin-top:12px}.roadmap{margin-top:40px;display:grid;grid-template-columns:repeat(3,1fr);gap:0}.roadmap article{padding:24px 25px 0 0;border-top:1px solid #dce1eb;position:relative}.roadmap-dot{position:absolute;top:-4px;left:0;width:7px;height:7px;border-radius:50%;background:#d6dbe6}.available .roadmap-dot{background:var(--blue);box-shadow:0 0 0 4px #ecf0ff}.roadmap-tag{font-size:10px;color:#8d97aa}.available .roadmap-tag{color:var(--blue)}.roadmap h3{font-size:17px;font-weight:500;margin:13px 0 12px}.roadmap p{font-size:12px;color:#8a93a2;line-height:1.9;max-width:285px;margin-bottom:20px}.join{display:flex;justify-content:space-between;gap:20px;align-items:center;padding-top:40px;padding-bottom:45px;border-top:1px solid var(--line)}.join h2{font-size:25px;margin:10px 0}.join p{font-size:12px;color:#8d95a3}.footer{border-top:1px solid var(--line);padding-top:27px;padding-bottom:30px;display:flex;align-items:center;gap:25px;justify-content:space-between}.footer .brand{font-size:14px}.footer .brand-icon{width:24px;height:24px;border-radius:7px;font-size:24px}.footer p{font-size:9px;color:#959eae;line-height:1.8}.footer>span{font-size:8px;color:#8b95a6;letter-spacing:1px}dialog{border:1px solid #dfe4ef;border-radius:20px;padding:38px;max-width:590px;width:calc(100% - 32px);box-shadow:0 25px 90px #101f3a33;color:var(--ink)}dialog::backdrop{background:#19223c66;backdrop-filter:blur(4px)}dialog h2{font-size:25px;margin:12px 0 20px}dialog p,dialog li{font-size:13px;color:#727d90;line-height:1.9}dialog ul{padding-left:19px;margin:20px 0 28px}dialog li{margin:10px 0}.close-dialog{position:absolute;right:16px;top:10px;border:0;background:none;font-size:28px;color:#8d95a5}.history-entry{background:#f5f7fb;padding:14px;border-radius:9px;margin:12px 0;font-size:12px}.history-entry p{font-size:11px;margin-top:5px}.history-entry strong{font-weight:500}#clear-history{margin-top:15px}#history-list:empty:after{content:"还没有成功的模拟实验。先去运行一次吧。";display:block;padding:25px 0;color:#929aaa;font-size:13px}
@media(min-width:1400px){.hero{padding-top:88px;padding-bottom:90px}.hero h1{font-size:72px}}
@media(max-width:900px){.workbench-body{grid-template-columns:230px minmax(0,1fr)}.config-panel{padding:20px 15px}.experiment-panel{padding:22px 17px}.stage{gap:5px}.stage small{display:none}.stage-icon{width:24px;height:24px}.metrics>div{padding:10px}.metrics strong{font-size:25px}.header nav{gap:20px}.learning-grid{gap:24px}.hero h1{letter-spacing:-2px}.feedback{flex-wrap:wrap}}
@media(max-width:640px){:root{scroll-padding-top:77px}.header{height:65px;padding:0 20px}.brand{font-size:16px}.header nav{display:none}.github-link{font-size:12px}.wrap{padding-left:19px;padding-right:19px}.hero{padding-top:49px;padding-bottom:50px}.eyebrow{font-size:9px;letter-spacing:.5px;gap:7px}.hero h1{font-size:40px;letter-spacing:-1.8px;margin-top:26px}.hero-description{font-size:13px}.hero-actions{gap:8px}.button{padding:12px 18px;font-size:12px;gap:10px}.hero-note{font-size:10px}.section-top{align-items:start;gap:13px}.section-top h2,h2{font-size:23px}.section-top>.text-button{font-size:9px;margin-top:8px;max-width:100px;text-align:left}.workbench-top{padding:0 12px;gap:9px}.workspace-name{font-size:10px}.simulation-badge{font-size:8px;padding:4px 6px}.workbench-body{grid-template-columns:1fr}.config-panel{padding:20px;border-right:0;border-bottom:1px solid var(--line)}.panel-heading{margin-bottom:15px}.config-panel fieldset{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px}.config-panel .field-label,.config-panel select,.scenario-description,.toggle-row,.range-heading,.config-panel input[type=range],.range-scale{grid-column:1/-1}.scenario-description{margin:0 0 10px}.range-heading{margin-top:10px}.toggle-row{margin-top:12px}.budget-box{margin:18px 0 12px}.config-footnote{display:none}.experiment-panel{padding:22px 16px 15px}.experiment-heading h3{font-size:16px}.pipeline{margin:20px 0}.stage strong{font-size:10px}.stage-icon{width:25px;height:25px}.stage-arrow{font-size:10px}.metrics{gap:7px}.metrics span{font-size:8px}.metrics strong{font-size:24px}.metrics small{font-size:7px}.metrics>div{padding:10px 8px}.help{display:none}.chart-title{font-size:8px}.console-top{font-size:9px}.logs{font-size:9px;height:120px}.experiment-actions{font-size:8px}.experiment-actions>span{max-width:160px}.lab-footer{padding:12px;gap:10px;flex-wrap:wrap;font-size:8px}.lab-footer>span:nth-child(2){display:none}.lab-caption{font-size:10px;line-height:1.8}.how-section{padding-top:64px;padding-bottom:50px}.section-top>p{display:none}.learning-grid{grid-template-columns:1fr;gap:28px;margin-top:30px}.learning-grid article{position:relative;min-height:160px;padding-right:110px}.learning-grid h3{margin-top:22px;font-size:17px}.learning-grid p{font-size:11px}.mini-config,.mini-flow,.mini-error{position:absolute;right:0;top:20px;width:100px;padding:20px 5px;height:90px;opacity:.65}.mini-flow{gap:4px}.mini-error span{font-size:7px}.mini-error b{font-size:8px}.roadmap{grid-template-columns:1fr;gap:25px}.roadmap article{padding-top:19px}.roadmap p{max-width:none}.roadmap-section{padding-bottom:50px}.join{align-items:start;flex-direction:column;padding-top:28px;padding-bottom:28px}.join h2{font-size:22px}.join p{font-size:11px;line-height:1.9}.footer{align-items:start;flex-wrap:wrap;gap:16px}.footer p{order:3;width:100%;font-size:8px}.footer>span{margin-left:auto;margin-top:7px}dialog{padding:30px 22px}dialog h2{font-size:21px}.hero-orbit{width:500px;height:200px}.feedback{font-size:9px}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
.timing-panel{margin-top:22px;padding:16px;border:1px solid #e6eaf3;border-radius:10px;background:#fcfcfe}.timing-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.timing-heading h4{margin:0;font-size:12px;font-weight:500}.timing-heading>span{font-size:9px;color:#8e98aa}.timing-totals{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:17px 0}.timing-totals span{font-size:10px;color:#8692a6;display:block}.timing-totals strong{font-family:'DM Sans',sans-serif;display:block;font-size:19px;font-weight:500;margin-top:5px;white-space:nowrap}.timing-bar{height:12px;border-radius:4px;overflow:hidden;display:flex;background:#edf0f6;margin-bottom:14px}.prefill-compute{background:#4d6bfe}.prefill-communication{background:#9eb1fc}.decode-compute{background:#3e99b3}.decode-communication{background:#a6d5df}.timing-table{width:100%;border-collapse:collapse;font-size:10px;text-align:left;white-space:nowrap}.timing-table th,.timing-table td{padding:9px 5px;border-bottom:1px solid #e9edf4}.timing-table thead th{color:#8b95a7;font-weight:400}.timing-table tbody th{font-weight:400;color:#59677f}.timing-table td{color:#69778e;font-variant-numeric:tabular-nums}.timing-table-scroll{overflow:auto}.timing-dot{width:6px;height:6px;display:inline-block;border-radius:2px;margin-right:7px}.timing-note{font-size:10px;color:#929bab;line-height:1.8;margin-top:12px}@media(max-width:640px){.timing-panel{padding:12px}.timing-heading{align-items:start;flex-direction:column;gap:6px}.timing-totals{grid-template-columns:repeat(2,1fr);gap:14px}.timing-totals strong{font-size:20px}.timing-table{font-size:10px}.timing-table th,.timing-table td{padding:9px 4px}.timing-note{font-size:10px}.timing-table th:last-child,.timing-table td:last-child{display:none}}
