.sh-tag{display:flex;align-items:center;gap:12px;margin-bottom:12px}

.sh-line{width:48px;height:1px;background:var(--rule-2)}

.sh-row{display:flex;justify-content:space-between;align-items:baseline;gap:20px;flex-wrap:wrap}

.hero{position:relative;border-bottom:1px solid var(--rule);overflow:hidden;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:72px 72px;background-position:center top}

.hero-in{display:grid;grid-template-columns:repeat(12,1fr);gap:24px;padding:84px 0 0;position:relative;z-index:3}

.hero-txt{grid-column:1/7;padding-bottom:8px}

.hero-draw{grid-column:7/13;align-self:end;position:relative}

.kicker{font-family:var(--mono);font-size:12px;letter-spacing:.18em;color:var(--ink-3);margin-bottom:22px}

.kicker b{color:var(--brand-ink);font-weight:400}

.tick{display:inline-block;width:.55em;height:.09em;min-width:16px;min-height:3px;background:var(--brand);transform:rotate(-45deg) translateY(-.12em);margin-right:.4em;vertical-align:middle}

.hero-p{color:var(--ink-2);max-width:600px;font-size:16px;margin:26px 0 34px}

.hero-btns{display:flex;gap:14px;flex-wrap:wrap}

.hero.xh-on .xh{opacity:1}

.xh-x{width:100%;height:1px;background:var(--rule-2)}

.xh-y{width:1px;height:100%;background:var(--rule-2)}

.xh-read{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-3);background:color-mix(in srgb,var(--paper) 82%,transparent);padding:1px 6px;white-space:nowrap}

.hero-draw svg{width:100%;height:auto;color:var(--ink)}

.tools{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}

.spec{border-top:1px dashed var(--rule);padding-top:12px;margin-top:auto;font-size:13px;color:var(--ink-2)}

.spec .cap{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-3);display:block;margin-bottom:8px}

.gbar{display:grid;grid-template-columns:64px 1fr 22px;align-items:center;gap:8px;font-size:12px;margin-top:6px}

.gbar .tr{height:7px;background:var(--paper-3);position:relative}

.gbar .tr i{position:absolute;left:0;top:0;bottom:0;background:var(--ink)}

.gbar .g{font-family:var(--mono);font-weight:700;color:var(--brand-ink)}

.aska{margin-top:8px;font-size:12.5px;color:var(--ink)}

.cite{display:inline-block;margin-top:8px;font-family:var(--mono);font-size:11px;border:1px solid var(--rule-2);padding:2px 8px;color:var(--ink-2);background:var(--paper)}

.go-l{font-family:var(--mono);font-size:13px;color:var(--brand-ink);letter-spacing:.06em;margin-top:10px}

.panel2{display:grid;grid-template-columns:repeat(12,1fr);gap:32px;align-items:start}

.p2-l{grid-column:1/6}

.p2-r{grid-column:6/13}

.stats{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--rule);margin:26px 0}

.stat{flex:1 1 33%;padding:14px 18px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}

.stat b{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:26px;font-weight:600;display:block;line-height:1.2}

.stat span{font-size:12px;color:var(--ink-3);letter-spacing:.06em}

.stat:nth-child(3n){border-right:0}

.stat:nth-child(n+4){border-bottom:0}

.ladder{border:1px solid var(--rule-2);background:var(--paper-2)}

.ladder .lh{display:flex;justify-content:space-between;align-items:baseline;padding:12px 18px;border-bottom:1px solid var(--rule-2)}

.ladder .lh b{font-family:var(--mono);font-size:13px;letter-spacing:.1em;font-weight:600}

.ladder .lh span{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--ink-3)}

.chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:24px}

.chips a{font-size:13px;color:var(--ink-2);border:1px solid var(--rule);border-radius:var(--r);padding:6px 14px;background:var(--paper-2)}

.chips a:hover{border-color:var(--ink);color:var(--ink)}

.ivs{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}

.iv-th{position:relative;aspect-ratio:16/9;background:var(--paper-3);overflow:hidden;border-bottom:1px solid var(--rule)}

.iv-th img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

.iv-th .grid-bg{position:absolute;inset:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:36px 36px}

.chip{position:absolute;font-family:var(--mono);font-size:11px;letter-spacing:.08em;padding:3px 8px;background:color-mix(in srgb,var(--paper) 90%,transparent);border:1px solid var(--rule-2);color:var(--ink-2)}

.chip-dur{right:10px;bottom:10px}

.chip-co{left:10px;top:10px}

.iv-bd{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}

.iv-tag{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--blue)}

.iv-t{font-family:var(--serif);font-size:16.5px;font-weight:700;line-height:1.5}

.iv-d{font-size:13px;color:var(--ink-3);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}

.flow{display:grid;grid-template-columns:1fr 88px 1fr 88px 1fr;align-items:stretch;margin:36px 0 28px}

.fnode{border:1px solid var(--rule-2);background:var(--paper-2);padding:20px;position:relative}

.fnode .st{position:absolute;top:-13px;left:16px;font-family:var(--mono);font-size:12px;background:var(--paper);border:1px solid var(--rule-2);width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--brand-ink);font-weight:700}

.fnode h4{font-size:16px;font-weight:700;margin:6px 0 6px}

.fnode p{font-size:13px;color:var(--ink-2);line-height:1.7}

.fconn{display:flex;align-items:center;position:relative;padding:0 6px}

.fconn .ln{flex:1;height:1px;background:var(--rule-2)}

.fconn .tk{width:2px;height:10px;background:var(--brand);transform:rotate(45deg)}

.fconn .arr{color:var(--ink-3);font-family:var(--mono);font-size:13px;margin-left:4px}

















@media(max-width:1024px){.tools{grid-template-columns:repeat(2,1fr)}.ivs{grid-template-columns:repeat(2,1fr)}.panel2{grid-template-columns:1fr}.p2-l,.p2-r{grid-column:auto}}

@media(max-width:760px){.sec{padding:64px 0}.hero-in{grid-template-columns:1fr;padding-top:56px}.hero-txt,.hero-draw{grid-column:auto}.hero-draw{margin-top:20px}.tblock{grid-template-columns:1fr 1fr}.tblock>div:nth-child(2){border-right:0}.tblock>div:nth-child(-n+2){border-bottom:1px solid var(--rule)}.tools,.ivs{grid-template-columns:1fr}.prow{grid-template-columns:1fr;gap:4px}.prow .arw{display:none}.flow{grid-template-columns:1fr;gap:26px}.fconn{transform:rotate(90deg);height:56px;width:56px;margin:0 auto}.fconn .arr{display:none}.fnode .st{top:-13px}.mnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;background:var(--paper-2);border-top:1px solid var(--rule);padding-bottom:env(safe-area-inset-bottom)}.mnav a{flex:1;text-align:center;font-size:11px;color:var(--ink-3);padding:10px 0 calc(10px+env(safe-area-inset-bottom));font-family:var(--mono);letter-spacing:.05em}.mnav a.on{color:var(--brand-ink)}body{padding-bottom:calc(52px+env(safe-area-inset-bottom))}.to-top{bottom:calc(64px+env(safe-area-inset-bottom))}.stat{flex-basis:50%}.stat:nth-child(3n){border-right:1px solid var(--rule)}.stat:nth-child(2n){border-right:0}.stat:nth-child(n+4){border-bottom:1px solid var(--rule)}.stat:nth-child(n+5){border-bottom:0}.lrow[data-t]{margin-left:0}.band .wrap{flex-direction:column;align-items:flex-start}}



.hero h1{font-family:var(--sans);font-weight:800;letter-spacing:.01em}

.dview{position:relative}

.draw-pane{transition:opacity .2s}

.draw-pane[hidden]{display:none}

.cmdline{display:none;font-size:12px;color:var(--yellow);background:var(--paper-3);border:1px solid var(--rule);padding:6px 10px;margin-top:8px}

html.dark .cmdline{display:block}

.caret{font-style:normal;animation:blink 1.1s steps(1) infinite}


.dp{width:100%;height:100%}

.dp .axl{stroke:var(--ink);opacity:.28}

.dp .axl circle{stroke:var(--ink);fill:var(--paper)}

.dp .wl{stroke:var(--ink);fill:none}

.dp .cd{fill:var(--ink);stroke:none}

.dp .dm{stroke:var(--ink-2);fill:none}

.dp .lb{fill:var(--ink);font-family:var(--sans);font-size:13px}

.dp .lb2{font-family:var(--mono);font-size:11px;fill:var(--ink-2)}

.dp .lb3{font-family:var(--mono);font-size:12px;fill:var(--ink-3)}

.dp .rd{stroke:var(--red);stroke-width:1.6}

.dp .f-r{fill:var(--red)}
.dp .f-y{fill:var(--yellow)}
.dp .f-b{fill:var(--blue)}


html.dark .dp .axl{stroke:var(--red);opacity:.9;stroke-dasharray:8 4 1 4}

html.dark .dp .axl circle{fill:none}

html.dark .dp .wl{stroke:var(--ink);stroke-width:1.1}

html.dark .dp .cd{fill:var(--ink)}

html.dark .dp .dm{stroke:var(--blue)}

html.dark .dp .lb{fill:var(--yellow)}
.dp .lb2{fill:var(--ink-2)}

html.dark .dp .lb2{fill:var(--blue)}
html.dark .dp .lb3{fill:var(--blue)}

html.dark .dp .rd{stroke:var(--red)}

html.dark .dp .f-r,html.dark .dp .f-y,html.dark .dp .f-b{fill-opacity:0}


.draw-pane.on .fl>*{transform-box:fill-box;transform-origin:center;animation:fpop .5s cubic-bezier(.2,.7,.2,1) backwards}

.draw-pane.on .fl>*:nth-child(2){animation-delay:.15s}
.draw-pane.on .fl>*:nth-child(3){animation-delay:.3s}

html.dark .draw-pane.on .wl path,html.dark .draw-pane.on .axl path,html.dark .draw-pane.on .axl circle{animation:plotd 1.1s ease backwards}

@media(prefers-reduced-motion:reduce){.draw-pane.on *{animation:none!important}.caret{animation:none}}



.cases .seg{display:flex;border:2px solid var(--rule-bold)}

.cases .seg button{font:12px var(--mono);padding:7px 16px;border:0;background:var(--paper-2);color:var(--ink-2);cursor:pointer}

.cases .seg button:first-child{border-right:2px solid var(--rule-bold)}

.cases .seg button[aria-pressed=true]{background:var(--red);color:#fff}

.cwall{display:grid;grid-template-columns:repeat(12,1fr);gap:28px 24px;margin-top:40px}

.case{display:block;position:relative;text-align:left;border:0;background:none;padding:0;cursor:pointer;grid-column:var(--gc)}

.case .chip{position:absolute;top:8px;left:8px;z-index:3;font:11px var(--mono);padding:2px 8px;background:var(--red);color:#fff}

.case .chip.stu{background:var(--ink);color:var(--paper-2)}

.flipbox{position:relative;display:block;perspective:1200px;background:var(--paper-2);border:1px solid var(--rule)}

.flip{display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .52s cubic-bezier(.2,.7,.2,1)}

.case.fl .flip{transform:rotateY(180deg)}

.face{position:absolute;inset:0;backface-visibility:hidden;overflow:hidden}

.face.b{transform:rotateY(180deg)}

.face img{width:100%;height:100%;display:block}

.face.a img{object-fit:cover}

.face.b img{object-fit:contain;background:var(--paper-2)}

.face.b::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .5s}

.face.b.ld::after{opacity:0}

.face.b.ld{transition:none}

.face.b img{opacity:0;transition:opacity .2s}

.face.b.ld img{opacity:1}

.case .cap{display:block;font:12px var(--mono);color:var(--ink-3);margin-top:8px;letter-spacing:.04em}

.cnote{font-size:11px;color:var(--ink-3);margin-top:32px}

html.dark .flipbox{background:var(--paper-2)}

html.dark .flipbox img{filter:invert(.88) hue-rotate(180deg) contrast(1.08)}

@media(hover:hover) and (pointer:fine){.case:focus-visible .flip{outline:2px solid var(--red-ink)}}

@media(prefers-reduced-motion:reduce){.flip{transition:opacity .15s;transform:none}.case.fl .flip{transform:none}.face{position:relative}.face.b{position:absolute;opacity:0}.case.fl .face.b{opacity:1}.case.fl .face.a{opacity:0}}

@media(max-width:760px){.cwall{grid-template-columns:1fr 1fr;gap:20px 14px}.case{grid-column:auto}}



h1,h2,h3,h4,h5,h6,.sec-head h2,.prow h3,.iv-t,.band h2,.fbrand b,.cmain-h h1,.mmenu a.mi,.ivs h3,.tcard h3,.fnode h4,details summary{font-family:var(--sans)!important}

html:not(.dark) .cases .sheet-no{background:var(--red)}





.dp .pc{fill:var(--ink);stroke:none}

.dp .pt{stroke:var(--ink);fill:none;stroke-width:1.2}

.dp .gz{stroke:var(--ink);fill:none;stroke-width:.8}

.dp .byl{stroke:var(--ink-3);fill:none;stroke-width:.8}

.dp .lb .tn{font-family:var(--mono);font-size:10px;fill:var(--ink-2)}

.dp .ft{fill:var(--paper-2)}
.dp .fs{fill:var(--paper-2)}
.dp .fe{fill:var(--paper-3)}

.dp .wn{stroke:var(--ink-3);stroke-width:.8;fill:none}

.dp .sh{fill:var(--rule);stroke:none;opacity:.6}

html.dark .dp .pc{fill:none;stroke:var(--ink);stroke-width:1.1}

html.dark .dp .byl{stroke:var(--ink-3);opacity:.7}

html.dark .dp .ft,html.dark .dp .fs,html.dark .dp .fe{fill:var(--paper-2)}

html.dark .dp .sh{display:none}

html.dark .dp .lb .tn{fill:var(--blue)}

.dp .ft.f-r{fill:var(--red)}
.dp .ft.f-b{fill:var(--blue)}
.dp .ft.f-y{fill:var(--yellow)}

html.dark .dp .ft.f-r,html.dark .dp .ft.f-b,html.dark .dp .ft.f-y{fill:var(--paper-2);fill-opacity:1}

html.dark .dp .wn,html.dark .dp .fs,html.dark .dp .fe{stroke:var(--ink);fill:var(--paper-2)}

.dp .lb .tr,.dp .lb .bb{fill:none;stroke:var(--ink-2);stroke-width:1}

.dp .hd circle{fill:var(--ink);stroke:none}

.dp .lbw{fill:#fff}

.dp .tra{stroke:var(--ink-2);stroke-width:.9}
.dp .tra ellipse{fill:var(--paper-2);fill-opacity:.85}

.dp .dr{stroke:var(--ink)}

html.dark .dp .lbw{fill:var(--yellow)}
html.dark .dp .lb .tr,html.dark .dp .lb .bb{stroke:var(--blue)}

html.dark .dp .tra ellipse{fill:var(--paper-2);fill-opacity:1}



.dview{position:relative;aspect-ratio:560/400}

.draw-pane{position:absolute;inset:0;display:flex}

.draw-pane .dp{width:100%;height:100%}



.lt{display:inline-block;font:11px var(--mono);padding:1px 6px;margin-right:4px;border:1px solid var(--ink);color:var(--ink);text-decoration:none}

.lt-985{background:var(--red);border-color:var(--red);color:#fff}

.lt-211{background:var(--blue);border-color:var(--blue);color:#fff}

.lt-双一流{background:var(--yellow);border-color:var(--yellow);color:#111}

.lr{display:grid;grid-template-columns:64px 1fr;border-top:1px solid var(--rule);align-items:start}

.lr .lv{font:11px/17px var(--mono);width:36px;justify-self:center;margin-top:10px;padding:0;border:1px solid var(--rule);border-radius:3px;letter-spacing:.5px;text-align:center;color:var(--red)}

.lr .ns{padding:8px 12px;font-size:13px;line-height:1.9}

.lr a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--rule);margin-right:10px;white-space:nowrap}

.lr a:hover{color:var(--red-ink);border-color:var(--red-ink)}


.xh-x,.xh-y{background:var(--red);opacity:.7}

.xh-read{color:var(--red-ink)}

html.dark .xh-x,html.dark .xh-y{background:var(--rule-2);opacity:1}

html.dark .xh-read{color:var(--ink-3)}


.case .flipbox{aspect-ratio:var(--ar,4/3)}

.case .flipbox img{object-fit:contain}

.case{transition:opacity .28s ease,transform .28s ease}

.case.off{opacity:0;transform:translateY(10px);transition:none}

.case.empty{visibility:hidden}

.cctl{display:flex;align-items:center;gap:14px;margin-top:30px;flex-wrap:wrap}

.cbtn{font:13px var(--sans);padding:8px 18px;border:2px solid var(--rule-bold);background:var(--paper-2);color:var(--ink);cursor:pointer}

.cbtn.pri{background:var(--ink);color:var(--paper-2);border-color:var(--ink)}

.cbtn:hover{border-color:var(--red-ink)}

.cctl .ccnt{font-size:12px;color:var(--ink-2);letter-spacing:.08em}

.cctl .cstat{font-size:12px;color:var(--ink-3);margin-left:auto}

@media(prefers-reduced-motion:reduce){.case{transition:none}.case.off{opacity:0}}



.case .chip{position:absolute;top:6px;left:6px}

.case .cap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

html.dark .flipbox img{filter:none}

html.dark .face{filter:invert(.88) hue-rotate(180deg) contrast(1.08)}

html.dark .face.b{background:var(--paper-2)}

html.dark .face{background:#fff}



.hctl{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}

.hctl .hcnt{font-size:12px;color:var(--ink-2);letter-spacing:.1em}

.hctl .hcap{font-size:12.5px;color:var(--ink);cursor:help}

.draw-pane{transition:opacity .25s}


.dp .xl{transition:transform .8s cubic-bezier(.25,.7,.2,1)}

.dp.mw{cursor:pointer}

.dp.xp .xl{transform:translateY(calc(var(--c) * -42px))}

.dp .al{opacity:0;transition:opacity .4s}
.dp.xp .al{opacity:1}

@media(prefers-reduced-motion:reduce){.dp .xl{transition:none}.draw-pane{transition:none}}



.dp.mw .cut{fill:var(--ink);stroke:none}

.dp.mw .ln{stroke:var(--ink);stroke-width:1.2;fill:none}

.dp.mw .thin{stroke:var(--ink-3);stroke-width:.7;fill:none}

.dp.mw .gls{stroke:var(--ink-3);stroke-width:.5;fill:none}

.dp.mw .ax{stroke:var(--ink-3);stroke-width:.6;stroke-dasharray:10 3 2 3;opacity:.6;fill:none}

.dp.mw .dim{stroke:var(--ink-2);stroke-width:.6;fill:none}

.dp.mw .hat{stroke:var(--ink-3);stroke-width:.5;fill:none}

.dp.mw .t{font-family:var(--sans);fill:var(--ink)}

.dp.mw .t-mono{font-family:var(--mono);font-size:10px;fill:var(--ink-2)}

.dp.mw .fc-top{fill:var(--paper-2);stroke:var(--ink);stroke-width:1;stroke-linejoin:round}

.dp.mw .fc-l{fill:var(--paper-3);stroke:var(--ink);stroke-width:1;stroke-linejoin:round}

.dp.mw .fc-r{fill:#CFCCC5;stroke:var(--ink);stroke-width:1;stroke-linejoin:round}

.dp.mw .fc-top.f-r{fill:var(--red)}
.dp.mw .fc-top.f-y{fill:var(--yellow)}
.dp.mw .fc-top.f-b{fill:var(--blue)}

html.dark .dp.mw .cut{fill:none;stroke:var(--ink);stroke-width:1}

html.dark .dp.mw .ln{stroke:var(--ink)}

html.dark .dp.mw .thin{stroke:var(--ink-3)}

html.dark .dp.mw .gls{stroke:var(--ink-3)}

html.dark .dp.mw .ax{stroke:var(--red);opacity:.9}

html.dark .dp.mw .dim{stroke:var(--blue)}

html.dark .dp.mw .hat{stroke:var(--ink-3)}

html.dark .dp.mw .t{fill:var(--yellow)}

html.dark .dp.mw .t-mono{fill:var(--blue)}

html.dark .dp.mw .fc-top,html.dark .dp.mw .fc-l,html.dark .dp.mw .fc-r{fill:var(--paper-2);stroke:var(--ink)}

html.dark .dp.mw .fc-top.f-r,html.dark .dp.mw .fc-top.f-y,html.dark .dp.mw .fc-top.f-b{fill:var(--paper-2);stroke:var(--ink)}



.hero-draw{align-self:center}

.hctl{margin-bottom:6px}



.cwall{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}

.case .flipbox{aspect-ratio:4/3}

.case .flipbox .face{padding:6%}

.case .flipbox img{object-fit:contain}

@media(max-width:1023px){.cwall{grid-template-columns:repeat(3,1fr)}}

@media(max-width:760px){.cwall{grid-template-columns:repeat(2,1fr)}}

.dp.mw .xl{transition:transform .9s cubic-bezier(.22,.8,.2,1);transition-delay:calc(var(--c) * 70ms)}

.dp.mw:has(.xl){cursor:zoom-in}
.dp.mw.xp:has(.xl){cursor:zoom-out}

@media (prefers-reduced-motion:reduce){.dp.mw .xl{transition:none}}

.cwall>.case{min-width:0}
.case .cap{min-width:0}
