/* Kang Xiaoyang Research Group — Fudan / CIRAM */
:root{--blue:#123c8c;--navy:#102b5c;--ink:#1c2d48;--muted:#6b7890;--line:#e0e6ef;font-family:Inter,"SF Pro Text",-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;color:var(--ink);background:#f5f7fb;font-synthesis:none;text-rendering:optimizeLegibility}body{line-height:1.6}h1,h2,h3{color:var(--ink);font-weight:600;letter-spacing:-.025em}header{min-height:112px;padding:24px 4%;background:var(--navy);border-bottom:3px solid #416db4;box-shadow:0 4px 24px #102b5c10}header h1{color:#fff;font-size:24px}header .eyebrow{color:#c3d1e8;font-weight:400;font-size:12px;letter-spacing:.08em;margin-bottom:4px}.platform-brand{display:flex;align-items:center;gap:16px}.fudan-seal{position:relative;display:inline-block;flex:none;width:54px;height:54px;overflow:hidden;border-radius:50%;background:white;border:4px solid white}.fudan-seal img{position:absolute;width:294%;max-width:none;height:auto;left:-38%;top:-43.5%}.ciram-seal{display:block;width:54px;height:54px;overflow:hidden;flex:none}.ciram-seal img{display:block;height:54px;width:auto;max-width:none}.platform-brand>div{padding-left:4px}.header-link{color:#dce7fa;font-weight:500}.primary-link,button{background:var(--blue);border-radius:9px;padding:11px 17px;transition:background .16s,box-shadow .16s}header .primary-link{background:#fff;color:var(--navy)}button:hover,.primary-link:hover{background:#2452a0;color:#fff}header .primary-link:hover{background:#e7eefb;color:var(--navy)}.secondary{background:#eaf0f8;color:#36547b}.secondary:hover{background:#dce6f5;color:#193f78}header .secondary{background:#ffffff12;color:#e2eafa;border:1px solid #ffffff25}a{color:var(--blue);text-underline-offset:3px}a:hover{color:#416db4}main{max-width:1500px;margin:32px auto;padding:0 4% 40px}.section-title h2{font-size:17px;letter-spacing:.03em}.nodes{gap:16px;margin-bottom:32px}.node,.panel,.simulation-card{border:1px solid var(--line);border-radius:15px;box-shadow:0 4px 18px #17385b04}.node{padding:20px 22px}.node-head h3{font-size:18px}.metric{font-size:13px;margin:13px 0 7px;color:#64748b}.metric strong{color:var(--ink);font-variant-numeric:tabular-nums}.node-work{color:#546580;font-weight:400}.pill.online{background:#e8f3ef;color:#33745b}.pill{font-weight:500}progress{height:6px;background:#e9eef6;accent-color:var(--blue)}progress::-webkit-progress-bar{background:#e9eef6}progress::-webkit-progress-value{background:#3566ad}progress::-moz-progress-bar{background:#3566ad}.muted,.hint{color:var(--muted)}.task-progress{margin-top:32px}.status-tabs{padding:4px;background:#e9eef6;border-radius:12px;width:max-content;max-width:100%}.status-tabs button{background:transparent;color:#64748b;min-width:110px}.status-tabs button[aria-selected=true]{background:white;color:var(--blue);box-shadow:0 2px 7px #14366a12}.status-tabs span{background:#eaf0fa;color:#5276a8}.simulation-card{padding:19px 20px}.simulation-grid{gap:16px}.remaining{color:var(--blue);font-size:14px}.task-count{margin:16px 0}.panel{padding:30px}.upload-page{max-width:800px}.upload-page .panel{padding:36px}.upload-page h2{font-size:23px}.upload-page input[type=file]{padding:24px;border:1px dashed #a9bbd8;background:#f7f9fd;font-size:13px}.upload-page input::file-selector-button{border:0;border-radius:6px;background:#e4ebf7;color:#234c87;padding:9px 13px;margin-right:12px;font:inherit}input,select,textarea{border:1px solid #d8e0ed;border-radius:9px;padding:12px 14px;background:#fbfcfe;color:var(--ink);font:inherit}label{font-size:13px;font-weight:500;margin:20px 0 12px}input:focus,select:focus,textarea:focus{outline:3px solid #dbe6fb;border-color:#6b8dc6}button:focus-visible,a:focus-visible{outline:3px solid #91afe1;outline-offset:4px}.error:empty{display:none}.error{color:#a84338;font-size:13px}.login{min-height:100svh;background:#f0f3f9;display:grid;place-items:center;padding:36px 20px}.auth-layout{display:grid;grid-template-columns:1.1fr 1fr;width:min(100%,1000px);max-width:1000px;padding:0;margin:0;border-radius:22px;overflow:hidden;background:#fff;box-shadow:0 24px 90px #13336612;border:1px solid #e0e6f0}.auth-identity{position:relative;background:var(--navy);padding:40px 36px;display:flex;flex-direction:column;justify-content:space-between;min-height:560px;overflow:hidden}.auth-identity::after{content:"";position:absolute;border:1px solid #ffffff0d;border-radius:50%;width:500px;height:500px;right:-220px;bottom:-270px;box-shadow:0 0 0 55px #ffffff03,0 0 0 110px #ffffff03;pointer-events:none}.institution-marks{display:flex;align-items:center;gap:18px}.institution-marks .fudan-seal{width:52px;height:52px}.ciram-wordmark{width:calc(100% - 70px);height:auto;max-width:330px}.identity-copy{position:relative;z-index:1;padding:54px 0 60px}.identity-copy .eyebrow{font-size:10px;font-weight:400;letter-spacing:.18em;color:#afc3e5;margin-bottom:20px}.identity-copy h1{font-family:"Songti SC","Noto Serif CJK SC","STSong",serif;color:#fff;font-size:38px;font-weight:500;letter-spacing:.08em;line-height:1.45}.identity-subtitle{color:#d5e0f3;letter-spacing:.18em;font-size:18px;margin:16px 0 28px}.identity-note{color:#9eb3d6;font-size:13px}.identity-footer{font-size:10px;letter-spacing:.16em;color:#8da7d0;margin:0}.auth-form{padding:56px 48px;align-self:center}.form-kicker{font-size:11px;letter-spacing:.15em;color:#5373a6;margin:0 0 10px}.auth-form h2{font-size:28px;margin:0 0 10px}.auth-form>.muted{font-size:13px;margin-bottom:26px}.auth-form form>.muted{font-size:11px;line-height:1.6;margin:4px 0 12px}.auth-form button{width:100%;margin-top:16px;padding:13px}.auth-form>p:last-child{margin-top:24px;font-size:13px}.auth-form input{min-height:46px}.auth-form .error{margin:12px 0 0}.auth-form a{font-weight:500}dialog{border-radius:16px;padding:28px;box-shadow:0 24px 90px #132b4b30}dialog::backdrop{background:#102b5c66}#service-status:empty{display:none}#service-status:not(:empty){color:#65758e;font-size:13px}#updated{font-variant-numeric:tabular-nums}
@media(max-width:1000px){header{padding:22px 3%}.platform-brand{gap:12px}.nodes{gap:12px}.node{padding:17px}.auth-form{padding:40px 30px}.auth-identity{padding:34px 28px}.identity-copy h1{font-size:32px}}
@media(max-width:700px){header{display:flex;align-items:flex-start;padding:20px;gap:20px}.platform-brand{gap:10px}.platform-brand .fudan-seal,.ciram-seal{width:40px;height:40px}.ciram-seal img{height:40px}header h1{font-size:20px}header .eyebrow{font-size:10px;letter-spacing:.02em}header>div+div{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:8px}header form{margin:0}.nodes{grid-template-columns:repeat(2,minmax(0,1fr))}main{margin-top:24px;padding:0 18px 30px}.node{padding:15px}.metric{font-size:12px}.auth-layout{grid-template-columns:1fr;max-width:440px}.login{padding:18px 14px}.auth-identity{min-height:0;padding:28px}.identity-copy{padding:24px 0 4px}.identity-copy h1{font-size:27px}.identity-copy .eyebrow,.identity-note,.identity-footer{display:none}.identity-subtitle{font-size:14px;margin:8px 0 0}.auth-form{padding:30px 28px}.auth-form h2{font-size:25px}.ciram-wordmark{max-width:270px}.upload-page .panel{padding:24px}.upload-page h2{font-size:20px}}
@media(max-width:380px){.nodes{grid-template-columns:1fr}.platform-brand .eyebrow{font-size:9px}.platform-brand{gap:8px}.platform-brand>div{padding:0}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Larger institutional identity and visible hardware specifications. */
.platform-brand .fudan-seal,.platform-brand .ciram-seal{width:70px;height:70px}.platform-brand .ciram-seal img{height:70px}.platform-brand .eyebrow{font-size:14px}.platform-brand h1{font-size:27px}.institution-marks .fudan-seal{width:64px;height:64px}.ciram-wordmark{width:calc(100% - 82px)}.identity-copy h1{font-size:42px}.hardware-model{font-size:13px;font-weight:600;line-height:1.55;color:#304663;margin:12px 0 3px;overflow-wrap:anywhere}.hardware-spec{font-size:12px;color:#71809a;margin:0 0 14px;font-variant-numeric:tabular-nums}.gpu-resources{border-top:1px solid #e7ecf4;margin-top:18px;padding-top:5px}.gpu-resources .hardware-model{margin-bottom:12px}.nodes{align-items:stretch}
@media(max-width:700px){.platform-brand .fudan-seal,.platform-brand .ciram-seal{width:48px;height:48px}.platform-brand .ciram-seal img{height:48px}.platform-brand .eyebrow{font-size:10px}.platform-brand h1{font-size:21px}.identity-copy h1{font-size:31px}.hardware-model{font-size:12px}.node .metric{font-size:12px}}

.guide-layout{max-width:1120px;display:grid;grid-template-columns:180px minmax(0,1fr);gap:32px;align-items:start}.guide-nav{position:sticky;top:28px;display:grid;gap:4px;padding:12px 0}.guide-nav a{padding:9px 12px;border-radius:8px;text-decoration:none;color:#526580;font-size:13px}.guide-nav a:hover{background:#e7eef9;color:#123c8c}.guide-content{padding:36px 42px;line-height:1.9;overflow-wrap:anywhere}.guide-content>h1{font-size:30px;margin:0}.guide-content h2{font-size:21px;margin:36px 0 14px;scroll-margin-top:24px}.guide-content h2:first-of-type{margin-top:28px}.guide-content table{min-width:0;table-layout:fixed}.guide-content th:first-child,.guide-content td:first-child{width:30%}.guide-content blockquote{margin:20px 0;padding:6px 20px;border-left:3px solid #587db8;background:#f2f6fc;border-radius:0 10px 10px 0;font-size:13px}.guide-content li{margin:8px 0}.guide-content code{font-size:.9em;background:#edf2f9;padding:2px 5px;border-radius:4px}.guide-content hr{border:0;border-top:1px solid #e0e6ef;margin:32px 0}.auth-help{border-top:1px solid #e7ecf4;padding-top:16px;margin-bottom:0}@media(max-width:700px){.guide-layout{grid-template-columns:1fr;gap:16px}.guide-nav{position:static;display:flex;flex-wrap:wrap;padding:0;gap:4px}.guide-nav a{background:#eaf0f8;padding:6px 10px}.guide-content{padding:24px 20px}.guide-content h2{font-size:19px}.guide-content td{font-size:12px}}

.task-actions{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:12px;margin:0 0 24px}.task-actions a{text-decoration:none;font-weight:600}.task-actions .primary-link{color:#fff}.task-actions .guide-link{display:inline-block;padding:10px 16px;border:1px solid var(--line,#dce3eb);border-radius:9px;background:#fff}.task-actions a:focus-visible{outline:3px solid #729dcc;outline-offset:3px}

.memory-allocation{display:flex;width:100%;height:7px;overflow:hidden;border-radius:5px;background:#edf1f6}.memory-allocation>span{display:block;height:100%;flex-shrink:0}.memory-actual{background:#335f9c}.memory-reserved{background:#b8cdeb}

.gpu-memory-allocation{position:relative}.gpu-memory-allocation .memory-reserved{position:absolute;left:0;top:0}.gpu-memory-allocation .memory-actual{position:relative;z-index:1}
